定时器外部时钟
STM32 通用定时器 / 高级定时器 中触发与时钟控制结构的原理框图

STM32定时器的外部时钟功能,提供了两种硬件自动计数方案:模式1 注重路径和触发源的灵活性,模式2 则以简洁直接的路径获得更低延迟。
它们的核心差异可概括为下表:
| 特性 | 外部时钟模式 1 (External Clock Mode 1) | 外部时钟模式 2 (External Clock Mode 2) |
|---|---|---|
| 信号来源 | 多样化:TI1FP1, TI2FP2, TI1F_ED, ITRx, ETRF | 单一化:仅来自专用的 ETR 引脚 |
| 信号路径 | 复杂,需经触发控制器(Trigger Controller) 路由 | 简洁,绕过触发控制器,直接驱动计数器 |
| 灵活性 | 高,可软件选择多种触发源及边沿极性 | 低,只能由 ETR 信号驱动,极性可配 |
| 延迟与性能 | 路径较长,会引入少许延迟 | 最低延迟,响应速度快,适用于高频场景 |
| 核心用途 | 定时器间的级联同步、PWM 脉宽/周期测量 | 对高速外部脉冲(如传感器信号)进行硬件计数 |
| 配置关键位 | SMS=111, TS 选择触发源 |
ECE=1 |
下面我们来分别看看这两种模式的具体情况。
⚙️ 外部时钟模式1:功能强大的“灵活派”
这种模式为定时器带来高度的灵活性。外部信号必须经过触发控制器(Trigger Controller),这使得我们可以用软件选择多种信号源并配置边沿极性。
- 丰富的触发源:可通过配置
TS位,从多种来源中选择一个驱动计数器,包括:- ITRx (x=0..4):来自其他定时器的内部触发信号,是实现定时器级联的关键。
- TI1F_ED:通道1的双边沿检测信号(TI1上任意边沿都会触发计数)。
- TI1FP1 / TI2FP2:通道1或2的单边沿检测信号(可独立配置上升沿或下降沿触发)。
- ETRF:来自ETR引脚并经滤波分频后的信号。
- 灵活的信号处理:路径上集成了输入滤波器(抗干扰)和边沿检测器(选择上升沿或下降沿触发)。
- 典型应用:常用于定时器级联,例如用一个定时器的主模式输出信号(TRGO)去触发另一个从模式定时器,实现复杂的时序控制。
⚡ 外部时钟模式2:简洁高效的“直通派”
当需要追求最高计数效率和最低延迟时,这种模式是首选。其关键在于绕过了复杂的触发控制器,将ETR引脚的信号直接连接到计数器的时钟输入端,实现硬件级的自动计数,无需CPU干预,并能以极高频率工作。
- 专用信号通道:使用专用的
TIMx_ETR引脚作为唯一的信号输入源。 - 内置硬件处理:虽然路径简单,但信号仍会通过预分频器(
ETPS位)和数字滤波器(ETF位),以适应高频信号并滤除噪声。 - 典型应用:非常适合对外部高频脉冲进行精确计数,如电机转速测量、流水线产品计数等。
🛠️ 如何选择与配置
了解了原理,就可以根据实际需求来选择了:
1. 如何选择?
- 追求灵活性、实现复杂时序控制:选择外部时钟模式1。它能让你在丰富的触发源中选择。
- 追求极致性能、最低延迟:选择外部时钟模式2。这是对ETR专用通道的“直连”路径。
2. 配置步骤
配置时通常需要同时设置引脚复用(GPIO)和定时器(TIM)两部分。下面的示例展示了如何通过寄存器操作,将TIM2配置为外部时钟模式2,对PA0(ETR引脚)上的脉冲进行计数。
外部时钟模式2配置示例(以TIM2为例)
- 使能TIM2时钟:
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); - 配置GPIO:将
PA0复用为TIM2_ETR功能。 - 配置定时器:
TIM_TimeBaseInitTypeDef初始化结构体,设置分频、计数模式等。TIM_ETRClockMode2Config()专门配置外部时钟模式2。- 配置
TIM_SMCR寄存器,设置ETR分频、滤波等参数。
- 使能计数器:
TIM_Cmd(TIM2, ENABLE); - 读取计数值:通过
TIM_GetCounter(TIM2)读取CNT寄存器的值。
3. CubeMX配置方法
对于新手,使用STM32CubeMX进行图形化配置会更方便。以TIM3为例:
- 在“Timers”中启用TIM3。
- 将“Clock Source”选为External Clock Mode 1或2。
- 若选模式1,还需在“Slave Mode”中配置“Trigger Source”和“Slave Mode”为“External Clock Mode 1”。
- 根据需要配置“Trigger Polarity”(触发极性)。
- 配置“Prescaler”(分频器)和“Counter Period”(ARR)等参数。
- 最后生成代码即可。
⚠️ 关键注意事项
在配置和使用时,这几点值得留意:
- 计数器的自由度:无论是哪种外部时钟模式,定时器的其他高级功能(如输出比较、输入捕获)依然可以正常使用。
- ETR频率上限:为确保正确采样,外部ETR信号的频率不应超过定时器内部时钟(CK_INT)频率的1/4。
- 模式冲突:不能同时使能外部时钟模式1和模式2,如果尝试同时开启,系统将默认以ETRF作为时钟源。
另外,如果同时启用了外部时钟模式2和其他从模式(如复位、门控、触发模式),要确保触发输入(TRGI)没有连接到ETRF,以避免冲突。

浙公网安备 33010602011771号