为什么STM32单个定时器最大计时为59.65s?如何设置?

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.

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值