在搞一个姿态传感器的角度时用到定时器积分,但是积分的时候,角度积分出来的值一直是预期值的一半,分析了半天,觉得可能的错误原因(实际上不是)有:
1、定时器的时钟频率不对,但是看了看参考手册,时钟频率是对的。
2、定时器配置有问题,自动重装载值(arr)和定时器分频(psc),甚至以为俩值弄反了,但是改了还是无济于事。
百思不得其解,后来怀疑到了我的中断服务函数去了,是不是我的中断处理时间太长导致的?我把中断的时序搞清楚后才明白,计时器溢出后进入中断服务函数,同时计时器继续重新计数,但是如果标志位不复位,到达下一次溢出时间时就不会进入中断,导致实际上当这次中断服务函数开始,之后结束这个过程超过了一个定时器溢出时间,所以到第二个溢出时间才会再次进入中断,也就是花了两倍的时间,进而导致积分出来的数一直是实际值的一半。