STM32用在正交编码器上,为了得到一个很大的累计值(超过360度,与CNT寄存器一起组成32位的寄存器),所以需要进行累计,希望在定时器向上溢出时,高16位值加1,当向下溢出时则减1。
这个问题可以通过应用本身的特性解决:向上溢出时,读出的CNT数值应是一个很大的数,而向下溢出时,则读出的CNT数值应是一个很小的接近0的数。
if((TIM3->CR1 & TIM_CounterMode_Down) != TIM_CounterMode_Down)
Capture++;
我也是刚遇到这个问题,现在终于解决了,这个事最保险的办法
不需要设置,定时器为计数模式时自己回0的.初始化时只需要在0位置赋一次值其它就不用管了.