STM32F407 之 高级定时器功能描述

时间:2022-04-20 23:31:19

主要介绍下自己用到的一些功能


1、时基单元

主要包括:

● 计数器寄存器 (TIMx_CNT)

● 预分频器寄存器 (TIMx_PSC)

● 自动重载寄存器 (TIMx_ARR)

● 重复计数器寄存器 (TIMx_RCR)


预分频器说明:预分频器可对计数器时钟频率进行分频,分频系数介于 1 和 65536 之间。该预分频器基于TIMx_PSC 寄存器中的 16 位寄存器所控制的 16 位计数

器。由于该控制寄存器具有缓冲功能,因此可对预分频器进行实时更改。而新的预分频比将在下一更新事件发生时被采用。


2、计数器模式:递增、递减、*对齐模式(递增、递减)

1)递增计数模式(向上计数模式):计数器从 0 计数到自动重载值( TIMx_ARR 寄存器的内容),然后重新从 0 开始计数并生成计数器上溢事件。如果使用重复

计数器,则当递增计数的重复次数达到重复计数器寄存器中编程的次数加一次(TIMx_RCR+1) 后,将生成更新事件 (UEV)。否则,将在每次计数器上溢时产生更新

事件。

2)递减计数模式(向下计数模式):计数器从自动重载值( TIMx_ARR 寄存器的内容)开始递减计数到 0,然后重新从自动重载值开始计数并生成计数器下溢

事件。与上面的类似。

3)*对齐模式:计数器从 0 开始计数到自动重载值( TIMx_ARR 寄存器的内容)- 1,生成计数器上溢事件;然后从自动重载值开始向下计数到 1 并生成计数器下溢事件。之后从0 开始重新计数。有1、2、3,三种模式。

3、重复计数器

只有当重复计数器达到零时,才会生成更新事件。这在生成 PWM 信号时很有用。

这意味着,每当发生 N+1 个计数器上溢或下溢(其中, N 是 TIMx_RCR 重复计数器寄存器中的值),数据就将从预装载寄存器转移到影子寄存器( TIMx_ARR

自动重载寄存器、TIMx_PSC 预分频器寄存器以及比较模式下的 TIMx_CCRx 捕获/比较寄存器。

重复计数器在下列情况下递减:

● 递增计数模式下的每个计数器上溢。

● 递减计数模式下的每个计数器下溢。

● 中心对齐模式下每个计数器上溢和计数器下溢。尽管这使得最大重复次数不超过 128 个PWM 周期,但在每个 PWM 周期内可更新占空比两次。当在中心对齐

模式下,每个PWM 周期仅刷新一次比较寄存器时,由于模式的对称性,最大分辨率为 2xTck。


4、时钟选择

计数器时钟可由下列时钟源提供:

● 内部时钟 (CK_INT)

● 外部时钟模式 1:外部输入引脚

● 外部时钟模式 2:外部触发输入 ETR

● 外部触发输入 (ITRx):使用一个定时器作为另一定时器的预分频器,例如,可将定时器1 配置为定时器 2 的预分频器。


5、PWM 输入模式对于PWM输入,主要是测频率与测占空比。


6、强置输出模式:通过设置CCMR寄存器,可以使OCxREF强制为高或低一种状态。且计数器和比较器仍在工作,并产生中断或DMA。


7、输出比较模式

此功能用于控制输出波形,或指示已经过某一时间段。

在输出比较模式下,更新事件 UEV 对 OCxREF 和 OCx 输出毫无影响。同步的精度可以达到计数器的一个计数周期。输出比较模式也可用于输出单脉冲(在单

脉冲模式下)。

步骤:

1. 选择计数器时钟(内部、外部、预分频器)。

2. 在 TIMx_ARR 和 TIMx_CCRx 寄存器中写入所需数据。

3. 如果要生成中断请求,则需将 CCxIE 位置 1。

4. 选择输出模式。例如:

— 当 CNT 与 CCRx 匹配时,写入 OCxM = 011 以翻转 OCx 输出引脚

— 写入 OCxPE = 0 以禁止预装载寄存器

— 写入 CCxP = 0 以选择高电平有效极性

— 写入 CCxE = 1 以使能输出

5. 通过将 TIMx_CR1 寄存器中的 CEN 位置 1 来使能计数器。


8、PWM 模式

脉冲宽度调制模式可以生成一个信号,该信号频率由 TIMx_ARR 寄存器值决定,其占空比则由 TIMx_CCRx 寄存器值决定。有两种模式。


9、互补输出与死区插入

● 输出信号 OCx 与参考信号相同,只是其上升沿相对参考上升沿存在延迟。

● 输出信号 OCxN 与参考信号相反,并且其上升沿相对参考下降沿存在延迟。

STM32F407 之 高级定时器功能描述


10、单脉冲模式