作者nc23nick (弄牛連)
看板ASM
標題[問題] STM32 Timer溢位次數計算
時間Wed Jan 2 16:11:32 2019
各位大大新年快樂,小弟遇到一情形想問一下
設定一計數器,溢位時觸發中斷,在中斷服務函數裡把TIM_cycle++;
現在我有一task中有程式分別去抓取計數器計數值和cycle數值如下
---------------------------------
:
Counter = TIM_GetCounter(TIMX);
Cycle = TIM_cycle;
:
---------------------------------
目前遇到的問題是,一旦getcounter的值是要溢位前的情況時(如9999,下一個溢位成0)
此時抓到的cycle的值會多1(溢位後),想來問各位大大有什麼方式可以如何避免此情況
呢?~謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.216.36.13
※ 文章網址: https://webptt.com/m.aspx?n=bbs/ASM/M.1546416695.A.586.html
1F:推 chuegou: 你在溢位中斷裡讓他+1 然後說想要避免溢位時不要+1 01/02 22:10
2F:→ chuegou: 恩...把+1那行註解掉? 01/02 22:10
3F:→ nc23nick: 哈~可能是我說的不清楚讓大大誤會,我是希望counter和 01/03 11:17
4F:→ nc23nick: cycle值能對應正確~(抓到9999的cycle是還沒+1,抓到 01/03 11:18
5F:→ nc23nick: 0001時的cycle是有+1),這情況並非每次數到9999時cycle 01/03 11:18
6F:→ nc23nick: 都多+1,而是時正確時不正確,令人好生困擾~~QQ 01/03 11:19
7F:推 god145145: 你是用RTOS? 01/03 17:07
大大沒錯是用RTOS~QQ
8F:推 hizuki: 這邊沒有鎖沒有辦法,而且兩個不是原子操作 01/04 12:32
9F:推 chuegou: 用violate修飾詞有用嗎 01/04 20:33
※ 編輯: nc23nick (61.216.36.13), 01/08/2019 15:57:33
10F:推 twolight: volatile 01/03 17:37