自动重装载

声明:大部分内容来源于野火的PDF文档

高级定时器TIM的时基单元

在这里插入图片描述
高级控制定时器时基单元包括四个寄存器,分别是计数器寄存器(CNT)、预分频器寄存器(PSC)、自动重载寄存器(ARR)和重复计数器寄存器(RCR)。其中重复计数器 RCR 是高级定时器独有,通用和基本定时器没有。前面三个寄存器都是 16 位有效, TIMx_RCR 寄存器是 8 位有效。

预分频

预分频器 PSC,有一个输入时钟 CK_PSC 和一个输出时钟 CK_CNT。输入时钟CK_PSC 就是上面时钟源的输出,输出 CK_CNT 则用来驱动计数器 CNT 计数。通过设置预分频器 PSC 的值可以得到不同的 CK_CNT,实际计算为: fCK_CNT等于fCK_PSC/(PSC[15:0]+1),可以实现 1 至 65536 分频。

计数器CNT

计数器 CNT
高级控制定时器的计数器有三种计数模式,分别为递增计数模式、递减计数模式和递增/递减(中心对齐)计数模式。

自动重载寄存器 ARR

自动重载寄存器 ARR 用来存放与计数器 CNT 比较的值,如果两个值相等,

对于高级定时器,就递减重复计数器,当重复计数器减为零时就产生更新或中断。如果没有使用到重复计数器时,就直接产生更新和中断。

对于基本定时器和通用定时器,也就产生更新和中断。

但要注意到图中自动重载寄存器下方中有阴影。这是自动重载寄存器的影子寄存器功能。

实际上,我们在把值装进自动重载寄存器TIMx_ARR 中之前,是把值放在影子寄存器中的,然后有影子寄存器再送到自动重载寄存器TIMx_ARR 中的。

那么怎么使用这个影子寄存器的功能呢?

举个例子,当我们在程序中想要修改自动重载寄存器 ARR值的时候,如果想要修改的值不立即生效,而是在当前事件更新之后才让影子寄存器把 TIMx_ARR 值赋给自动重载寄存器 ARR值,也就是才让它生效。则可以通过 将TIMx_CR1 寄存器的 ARPE 位置 1来实现,而如果将 ARPE 位置为 0,则修改的 TIMx_ARR 值立即生效。

在一般的程序设计中,我们大多在一开始就把TIMx_ARR 的值给定下来了,也很少修改他。所以一般也不设置这个功能。

也就是在配置HAL库的时候,会有这个选项。
在这里插入图片描述
第一个即使配置Counter Period的值也就是计数器 CNT 的值,这个后面还有个括号中(AutoReload Register …),其实也就是设置自动重载寄存器的值 ARR。

下面还有个auto-reload preload (自动重装载预装载),一般就直接Disable,我都装载好了,而且一般我也不轻易改变这个值,所以我也用不到auto-reload preload。

  • 11
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xuechanba

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值