STM32正交编码器,怎么读取数据,避免中断更新值的影响

2019-12-10 18:15发布

应该问题可以简化为如果用定时器来计时,怎样在主程序里读取的时候,避免正好进入中断,影响最终结果。
比如设置溢出的周期是4000个,脉冲,那我在中断里面 对变量 Circle ++; 然后主程序要用到编码器的值,只需要读取定时器当前的值X = TIMx->CNT,
然后总脉冲数 = Circle*4000 + X;  如果在计算上面式子的时候,定时器又中断了,那应该算出来的值有问题的吧。
这个怎么避免?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
281229961
1楼-- · 2019-12-11 11:31
你输入脉冲的频率有多高? 可以计算出来 执行的空隙是足够的额
中星讯达
2楼-- · 2019-12-11 13:47
STM32的编码器模式不存在这个问题吧?
NJ8888
3楼-- · 2019-12-11 13:49
蛋疼STM捕获16位宽度
liugu
4楼-- · 2019-12-11 16:51
做一个缓冲区。
中断不断把数写到缓冲区里,主程序读当前位置的前一个数。这样,只要你能忍受差一个中断处理时间的误差就行。
pchf005
5楼-- · 2019-12-11 18:43
 精彩回答 2  元偷偷看……
jack_yu
6楼-- · 2019-12-11 19:49
谢谢分亨!

一周热门 更多>