作者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/cn.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