STM32的Hal库对于定时器TIM使用细则2

STM32的TIM->ARR寄存器实际上对应了两个寄存器:一个是用户可以写入或读出数据的寄存器,称为preload register(预装载寄存器),也就是TIM->ARR。另一个是用户看不见的、但在操作中真正起作用的寄存器称为shadow register(影子寄存器)。当我们需要修改定时时间的时候,其实修改的是表面那个预装载寄存器,要让这个修改起作用,就还要把预装载寄存器的值赋给影子寄存器才行。因为每次TIM->CNT计数都是跟影子寄存器比较,若满足条件才触发中断。那么根据不同的需求 :

从ARR预装载寄存器传送到影子寄存器,有两种方式,一种是立刻更新,一种是等触发事件之后更新;这两种方式主要取决于寄存器TIMx->CR1中的“APRE”位:
APRE=0,当ARR值被修改时,同时马上更新影子寄存器的值;
 APRE=1,当ARR值被修改时,必须在下一次事件UEV发生后才能更新影子寄存器的值;

 

还有个小细节要特别注意:就是注意定时器里面所有寄存器的位数都是16位的,所以取值范围为0-65535,若超过该值,则只会取到低16位。举例说明:时钟频率为72M, 分频数3600-1,这样计时频率就为20000Hz,若我们需要定时1s,则设置TIM->ARR为20000,3s则是60000,若我们定时器10s,则需要设置为100000,这个值已经大于65535了,因此只会取其低16位为34465,此时实际计时才34465/20000=1.7s
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值