一次性定时器

我希望,到目前为止,我已经说服您,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的值。