一次性定时器
我希望,到目前为止,我已经说服您,for
循环延迟是实现延迟的一种糟糕方式。
现在,我们将使用硬件计时器实现延迟。(硬件)计时器的基本功能是...精确跟踪时间。 定时器是微控制器可用的另一个外围设备;因此可以使用寄存器来控制。
我们使用的微控制器有几个(事实上超过10个)不同类型的定时器(基本定时器、通用定时器和高级定时器)。 有些计时器比其他计时器具有更高的分辨率(位数),有些计时器可用于跟踪时间。
我们将使用一个基本计时器:TIM6
。这是我们微控制器中最简单的计时器之一。基本计时器的文档如下:
第22节计时器-第670页-参考手册
其寄存器记录在:
第22.4.9节TIM6/TIM7寄存器图-第682页-参考手册
我们将在本节中使用的寄存器是:
SR
, 状态寄存器。EGR
, 事件生成寄存器。CNT
, 计数器寄存器。PSC
, 预分频器寄存器。ARR
, 自动卸载寄存器。
我们将使用计时器作为一次性计时器。它会像闹钟一样工作。我们会将计时器设置为在一段时间后关闭, 然后等待计时器关闭。文档将此操作模式称为单脉冲模式。
以下描述了在单脉冲模式下配置基本计时器时的工作方式:
- 计数器由用户启用 (
CR1.CEN = 1
)。 CNT
寄存器将其值重置为零,并且在每个刻度上,其值递增1。- 一旦
CNT
寄存器达到ARR
寄存器的值,硬件将禁用计数器(CR1.CEN = 0),并引发更新事件 (SR.UIF = 1
)。
TIM6
由APB1时钟驱动,其频率不必与处理器频率匹配。也就是说,APB1时钟可能运行得更快或更慢。
然而,默认情况下,APB1和处理器的时钟均为8 MHz。
单脉冲模式的功能描述中提到的刻度与APB1时钟的刻度不同。CNT
寄存器以每秒apb1 / (psc + 1)
次的频率增加,其中
apb1
是APB1时钟的频率,psc
是预分频器寄存器PSC
的值。