1 影响定时器计时值的因素
首先需要明确,定时器的计时值与两个因素有关,分别为:①计数值的大小和②计数的速度快慢。第一,在同样的速度下,从1数到100比从1数到10的时间要长,要想定时器计时更久,那么我们肯定希望在同样的速度下它能数到100,而不是只数到10。第二,同样从1数到100,那么数得越慢,时间也就越长,要想定时器计时更久,那么我们肯定希望数得慢一点。
2 自动重装载计数器的设置
定时器时基单元相关的寄存器都是16位的,2^16=65536,要想定时器实现最大计时,就让自动重装计数器也设为最大,这样,CNT从0数到65535(也就是计数65536次)才会清0。为什么是设最大而不是最小呢?这也就是上文提到的从1数到10和从1数到100的区别。
3 预分频系数的设置
STM32时钟频率为72MHz,也就是说,如果不分频,1秒内能数到72000000,参考第1章的第二个印象因素,这个计数速度太快了。CNT寄存器最大就只能存65536,65536/72000000≈0.0009,也就是说0.0009秒计数器就得清0了。要想延迟让计数器清零的时间延迟,就只能让时钟“数得慢一点”。如果分频系数调到最大,即65535,那么时钟频率减小为72000000/65536=1098.632813Hz,65536/1098.632813也就是说,原来72MHz时,计数器0.0009秒就得清零了,而现在59.65秒才清零。
综上所述,将自动重装载值和预分频系数设为最大,就可以让定时器在59.65秒之后才清0.