跳到主要内容

09 定时器

up的视频讲解

用触发来源、时基单元、输入捕获和输出比较四个模块,拆解定时器的工作过程。

1 从计数理解定时​

定时器的基本动作是对脉冲计数。如果每个脉冲间隔已知,数了多少个脉冲,就能得到经过的时间;反过来,也可以在计数达到某个值时改变输出。

不同类型的定时器共享计数的基本思路,外围功能有所不同。
不同类型的定时器共享计数的基本思路,外围功能有所不同。

课程芯片包含高级定时器 TIM1、通用定时器 TIM2~TIM4,以及内核中的 SysTick。它们的功能不能完全互换;例如高级定时器包含互补输出、死区等控制能力。

2 先看整体结构,再看信号方向​

把复杂框图分成触发来源、时基单元、输入通道、输出通道。
把复杂框图分成触发来源、时基单元、输入通道、输出通道。
模块主要问题
时钟与触发来源什么信号推动计数,什么信号控制计数过程
时基单元多久计数一次,数到哪里重新开始
输入捕获外部边沿到来时,计数器数到了多少
输出比较计数到指定值时,输出应该怎样改变

触发与从模式​

触发可以来自内部连接或外部引脚。根据配置,触发信号可以启动计数、控制计数门限、复位计数器,或作为外部计数时钟。

同一个触发来源,配合不同从模式,会对计数过程产生不同作用。
同一个触发来源,配合不同从模式,会对计数过程产生不同作用。

3 时基单元:PSC、CNT 与 ARR​

预分频器 PSC 先把输入时钟分频;计数器 CNT 对分频后的脉冲计数;自动重装载寄存器 ARR 决定计数周期的边界。

沿输入时钟 → PSC → CNT → ARR 的顺序理解一个计数周期。
沿输入时钟 → PSC → CNT → ARR 的顺序理解一个计数周期。

以向上计数为例,CNT 从 0 开始,每来一个计数脉冲加 1,到达周期边界后重新开始。向下计数和中心对齐模式使用不同的计数顺序。

比较向上、向下与往返计数,观察更新事件的位置。
比较向上、向下与往返计数,观察更新事件的位置。

计算周期​

在向上计数的基本配置中:

计数频率 = 定时器输入时钟 ÷ (PSC + 1)
更新周期 = (PSC + 1) × (ARR + 1) ÷ 定时器输入时钟

加 1 的原因是计数包含零。例如,从 0 数到 999,一共经过 1000 个计数状态。

先算每一格的时间,再算一个完整周期包含多少格。
先算每一格的时间,再算一个完整周期包含多少格。

高级定时器的重复计数器 RCR 还可以影响更新事件的节奏。阅读具体配置时,应把计数方式与更新条件一起考虑。

4 输入捕获:给外部边沿记录时间​

输入边沿到来时,硬件把当前 CNT 锁存到捕获/比较寄存器 CCR。两次捕获值的差,可以用来计算两个边沿之间的时间。

观察边沿发生的时刻,以及对应的计数值如何被保存。
观察边沿发生的时刻,以及对应的计数值如何被保存。

输入通路中的滤波与边沿选择,决定哪些变化会被接受。编码器模式则进一步利用两路输入的相位关系,判断方向并计数。

5 输出比较:让计数控制波形​

输出比较把 CNT 与 CCR 比较,再根据模式决定输出状态。PWM 利用这一过程,让每个周期中的一部分时间有效、另一部分时间无效。

ARR 决定周期,CCR 决定周期内的比较位置。
ARR 决定周期,CCR 决定周期内的比较位置。

在向上计数、PWM 模式 1 且有效电平为高的常见配置中,占空比由 CCR 相对于 ARR + 1 的比例决定。改变 ARR 影响周期,改变 CCR 影响脉宽。

互补输出和死区属于高级输出控制,读图时与普通 PWM 区分。
互补输出和死区属于高级输出控制,读图时与普通 PWM 区分。

接下来的两节实验分别沿输入与输出展开:先测量编码器和脉冲,再用 PWM 控制电机与舵机。