[問題] STM32 Timer溢位次數計算

看板ASM (組合語言)作者 (弄牛連)時間6年前 (2019/01/02 16:11), 6年前編輯推噓5(505)
留言10則, 5人參與, 5年前最新討論串1/1
各位大大新年快樂,小弟遇到一情形想問一下 設定一計數器,溢位時觸發中斷,在中斷服務函數裡把TIM_cycle++; 現在我有一task中有程式分別去抓取計數器計數值和cycle數值如下 --------------------------------- : Counter = TIM_GetCounter(TIMX); Cycle = TIM_cycle; : --------------------------------- 目前遇到的問題是,一旦getcounter的值是要溢位前的情況時(如9999,下一個溢位成0) 此時抓到的cycle的值會多1(溢位後),想來問各位大大有什麼方式可以如何避免此情況 呢?~謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.216.36.13 ※ 文章網址: https://www.ptt.cc/bbs/ASM/M.1546416695.A.586.html

01/02 22:10, 6年前 , 1F
你在溢位中斷裡讓他+1 然後說想要避免溢位時不要+1
01/02 22:10, 1F

01/02 22:10, 6年前 , 2F
恩...把+1那行註解掉?
01/02 22:10, 2F

01/03 11:17, 6年前 , 3F
哈~可能是我說的不清楚讓大大誤會,我是希望counter和
01/03 11:17, 3F

01/03 11:18, 6年前 , 4F
cycle值能對應正確~(抓到9999的cycle是還沒+1,抓到
01/03 11:18, 4F

01/03 11:18, 6年前 , 5F
0001時的cycle是有+1),這情況並非每次數到9999時cycle
01/03 11:18, 5F

01/03 11:19, 6年前 , 6F
都多+1,而是時正確時不正確,令人好生困擾~~QQ
01/03 11:19, 6F

01/03 17:07, 6年前 , 7F
你是用RTOS?
01/03 17:07, 7F
大大沒錯是用RTOS~QQ

01/04 12:32, 6年前 , 8F
這邊沒有鎖沒有辦法,而且兩個不是原子操作
01/04 12:32, 8F

01/04 20:33, 6年前 , 9F
用violate修飾詞有用嗎
01/04 20:33, 9F
※ 編輯: nc23nick (61.216.36.13), 01/08/2019 15:57:33

01/03 17:37, 5年前 , 10F
volatile
01/03 17:37, 10F
文章代碼(AID): #1SB78tM6 (ASM)
文章代碼(AID): #1SB78tM6 (ASM)