定时器外部时钟

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

image-20260420145207737

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为例)

  1. 使能TIM2时钟:RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
  2. 配置GPIO:将 PA0 复用为 TIM2_ETR 功能。
  3. 配置定时器:
    • TIM_TimeBaseInitTypeDef 初始化结构体,设置分频、计数模式等。
    • TIM_ETRClockMode2Config() 专门配置外部时钟模式2。
    • 配置 TIM_SMCR 寄存器,设置ETR分频、滤波等参数。
  4. 使能计数器:TIM_Cmd(TIM2, ENABLE);
  5. 读取计数值:通过 TIM_GetCounter(TIM2) 读取 CNT 寄存器的值。

3. CubeMX配置方法

对于新手,使用STM32CubeMX进行图形化配置会更方便。以TIM3为例:

  1. 在“Timers”中启用TIM3。
  2. 将“Clock Source”选为External Clock Mode 1或2。
  3. 若选模式1,还需在“Slave Mode”中配置“Trigger Source”和“Slave Mode”为“External Clock Mode 1”。
  4. 根据需要配置“Trigger Polarity”(触发极性)。
  5. 配置“Prescaler”(分频器)和“Counter Period”(ARR)等参数。
  6. 最后生成代码即可。

⚠️ 关键注意事项

在配置和使用时,这几点值得留意:

  • 计数器的自由度:无论是哪种外部时钟模式,定时器的其他高级功能(如输出比较、输入捕获)依然可以正常使用。
  • ETR频率上限:为确保正确采样,外部ETR信号的频率不应超过定时器内部时钟(CK_INT)频率的1/4。
  • 模式冲突:不能同时使能外部时钟模式1和模式2,如果尝试同时开启,系统将默认以ETRF作为时钟源。

另外,如果同时启用了外部时钟模式2和其他从模式(如复位、门控、触发模式),要确保触发输入(TRGI)没有连接到ETRF,以避免冲突。

posted @ 2026-05-22 23:29  Cerulean26  阅读(43)  评论(0)    收藏  举报