
🎬 渡水无言 :个人主页渡水无言
❄专栏传送门 : 《linux专栏》《嵌入式linux驱动开发》《linux系统移植专栏》
❄专栏传送门 : 《freertos专栏》 《STM32 HAL库专栏》《linux裸机开发专栏》
❄专栏传送门 :《产品测评专栏》
⭐️流水不争先,争的是滔滔不绝
📚博主简介:第二十届中国研究生电子设计竞赛全国二等奖 |国家奖学金 | 省级三好学生
| 省级优秀毕业生获得者 | csdn新星杯TOP18 | 半导纵横专栏博主 | 211在读研究生
在这里主要分享自己学习的linux嵌入式领域知识;有分享错误或者不足的地方欢迎大佬指导,也欢迎各位大佬互相三连
目录
[1.1 基本概念](#1.1 基本概念)
[1.2 核心接口:TRGI 与 TRGO](#1.2 核心接口:TRGI 与 TRGO)
[1.3 主要功能与价值](#1.3 主要功能与价值)
[2.1 从模式禁止(Disabled)](#2.1 从模式禁止(Disabled))
[2.3 编码器模式](#2.3 编码器模式)
[2.5、外部时钟模式1(External Clock Mode 1)](#2.5、外部时钟模式1(External Clock Mode 1))
[2.6、外部时钟模式2(External Clock Mode 2)](#2.6、外部时钟模式2(External Clock Mode 2))
[2.8 从模式总结对比](#2.8 从模式总结对比)
[3.1 使能模式(Enable)](#3.1 使能模式(Enable))
[3.2 更新模式(Update)](#3.2 更新模式(Update))
总结
前言
在前几期的博客中,我们系统学习了定时器的时基单元、输出比较、PWM生成、输入捕获等核心功能。这些都是定时器的独立工作模式------一个定时器单独完成任务。
但在实际项目中,往往需要多个定时器协同工作,或者需要定时器与ADC、DAC等外设精确同步。这时就需要用到定时器的从模式控制器。
本期我们就来深入探讨这个强大但容易被忽视的功能,带你彻底搞懂TRGI、TRGO以及八种从模式。
一、从模式控制器概述
1.1 基本概念
从模式控制器(Slave Mode Controller) 是STM32通用/高级定时器中的一个核心控制模块,位于定时器架构的"控制层",负责接收外部或内部触发信号,并据此控制时基单元(CNT、PSC、ARR)的行为。如下图所示:

简单来说,它实现了定时器的**"受控"功能**,使定时器能够响应外部事件或与其他外设协同工作。
1.2 核心接口:TRGI 与 TRGO
定时器通过两个关键接口实现内外通信:
| 接口 | 全称 | 方向 | 功能类比 | 说明 |
|---|---|---|---|---|
| TRGI | Trigger Input | 输入 | 📺 红外接收头 | 接收来自其他定时器、GPIO、ADC等的触发信号 |
| TRGO | Trigger Output | 输出 | 🎮 红外遥控器 | 向其他定时器、ADC、DAC等外设发送触发信号 |
如下图所示:

双向控制能力:
输入控制:通过TRGI接收信号 → 控制本定时器的时基单元(CNT启停、清零、复位等)
输出控制:通过TRGO发送信号 → 控制其他外设(如启动ADC转换、触发另一个定时器等)
1.3 主要功能与价值
| 功能 | 说明 | 应用价值 |
|---|---|---|
| 模块间同步 | 多个定时器、ADC、DAC精确时序协同 | 多相PWM、同步采样 |
| 外部事件响应 | 根据外部信号启动或停止计数 | 按键触发、传感器触发 |
| 级联计数 | 多个定时器串联实现超长时间定时 | 电子表、长时间延时 |
| 降低CPU负载 | 硬件自动触发,无需软件干预 | 提高系统效率 |
二、八种从模式详解(作为从机)
从模式决定了TRGI输入信号如何影响时基单元。下面逐一介绍这八种模式。
序号 模式选项 英文名称 功能描述 典型应用 1 从模式禁止 Slave Mode disable 禁用从模式,TRGI信号被忽略,定时器独立运行 默认状态,不需要外部同步的独立定时任务 2 编码器模式1 Encoder Mode 1 正交编码器模式I,仅TI1作为计数源,TI2作为方向 电机转速测量、旋钮位置检测(单倍频) 3 编码器模式2 Encoder Mode 2 正交编码器模式II,仅TI2作为计数源,TI1作为方向 电机转速测量、旋钮位置检测(单倍频) 4 编码器模式3 Encoder Mode 3 正交编码器模式III,TI1和TI2同时作为计数源 高精度电机测速(四倍频,精度最高) 5 复位模式 Reset Mode TRGI上升沿触发时,立即清零计数器CNT 外部同步清零、脉宽测量周期同步 6 门模式 Gated Mode TRGI高电平时允许计数,低电平时停止计数 门控测频、条件计数、受控PWM输出 7 触发模式 Trigger Mode TRGI上升沿触发启动计数器,触发后持续运行 外部事件触发单次定时、延时启动 8 外部时钟模式1 External Clock Mode 1 将TRGI信号作为时基单元的时钟源 对外部脉冲计数、定时器级联
2.1 从模式禁止(Disabled)
功能:禁用从模式,TRGI信号被忽略。
效果:定时器完全由内部时钟驱动,独立运行。
应用场景:
默认状态。
不需要外部同步的独立定时任务。
配置代码:
cpp
TIM_SelectSlaveMode(TIMx, TIM_SlaveMode_Disable);
2.2、复位模式
触发条件:TRGI输入上升沿。
动作:立即清零计数器CNT(可选择清除预分频器)。

2.3 编码器模式
功能:将定时器配置为正交编码器接口。
作用:测量旋转编码器的转速和方向。
工作原理:
使用两个输入通道(TI1、TI2)接收A/B相信号。
根据相位差判断旋转方向(正转/反转)。
CNT值反映累计转角。
三种模式区别:
| 模式 | 计数源 | 方向判断 | 特点 |
|---|---|---|---|
| Mode I | TI1计数,TI2方向 | TI2电平决定方向 | 单倍频 |
| Mode II | TI2计数,TI1方向 | TI1电平决定方向 | 单倍频 |
| Mode III | 两者都计数 | 两者共同判断 | 四倍频,精度最高 |
应用场景:
电机转速测量。
旋钮位置检测。
机器人关节角度反馈。
2.4、触发模式
触发条件:TRGI输入上升沿。
动作:启动计数器(开始向上计数)。
特点:
一次性触发,不维持状态。
触发后计数器持续运行,直到溢出或被停止。
与门控模式的区别:
| 模式 | 触发方式 | 计数状态 |
|---|---|---|
| 门控模式 | 电平控制 | 电平高则计数,低则停止 |
| 触发模式 | 边沿触发 | 触发一次后一直计数 |
2.5、外部时钟模式1(External Clock Mode 1)
功能:将TRGI信号作为时基单元的时钟源,替代内部时钟。
工作原理:
PSC = 0时,每个TRGI脉冲使CNT加1。
可结合PSC进行分频。
应用场景:
对外部脉冲信号进行计数(如转速计)。
实现定时器级联(如电子表)。
外部事件计数。
信号来源:
GPIO外部引脚。
其他定时器的TRGO。
ETR引脚。
具体如下图所示:

2.6、外部时钟模式2(External Clock Mode 2)
功能:使用ETR引脚作为外部时钟源。
特点:独立于TI1/TI2通道,常用于高频外部时钟输入。
配置函数如下:
cpp
TIM_SelectInputTrigger(TIMx, TIM_TS_ETRF);
TIM_SelectSlaveMode(TIMx, TIM_SlaveMode_External1);
2.7、门控模式
控制逻辑:
TRGI = 高电平:计数器允许计数。
TRGI = 低电平:计数器停止计数(保持当前值)。
2.8 从模式总结对比
| 从模式 | 触发方式 | 主要作用 | 典型应用 |
|---|---|---|---|
| 从模式禁止 | 无 | 独立运行 | 默认状态 |
| 编码器模式 | 正交信号 | 编码器解码 | 电机测速 |
| 复位模式 | 上升沿 | 计数器清零 | 同步复位 |
| 门模式 | 电平 | 使能计数 | 门控测频 |
| 触发模式 | 上升沿 | 启动计数 | 单次触发 |
| 外部时钟模式1 | 脉冲 | 外部时钟 | 脉冲计数 |
| 外部时钟模式2 | ETR脉冲 | 高频时钟 | 外部同步 |
三、主模式(作为主机)详解
主模式决定了在何种条件下通过TRGO输出触发信号。
3.1 使能模式(Enable)

输出逻辑:
定时器运行中 → TRGO输出高电平 。
定时器停止 → TRGO输出低电平。
功能: 状态指示信号
应用场景:
控制其他从定时器的门控模式。
指示系统工作状态。
3.2 更新模式(Update)

触发条件:发生更新事件(UEV)
计数器溢出(向上计数到ARR)。
计数器归零(向下计数到0)。
手动调用TIM_GenerateEvent()。
3.3、其他主模式(补充)
| 序号 | 模式选项 | 英文名称 | 触发条件 | 输出信号 | 典型应用 |
|---|---|---|---|---|---|
| 1 | 复位 | Reset | 定时器复位事件发生时 | TRGO输出脉冲 | 同步复位其他从定时器 |
| 2 | 使能 | Enable | 定时器使能/运行时 | TRGO输出高电平(运行)/低电平(停止) | 控制其他从定时器的门控模式、状态指示 |
| 3 | 更新 | Update | 发生更新事件(UEV)时 | TRGO输出短脉冲 | 触发ADC周期性采样、定时器级联计数 |
| 4 | 输出比较脉冲 | Compare Pulse | 输出比较匹配时 | TRGO输出脉冲 | 精确时间点触发、PWM同步 |
| 5 | 输出比较参考信号1 | Compare OC1Ref | OC1REF信号变化时 | TRGO跟随OC1REF | 通道1的PWM同步信号输出 |
| 6 | 输出比较参考信号2 | Compare OC2Ref | OC2REF信号变化时 | TRGO跟随OC2REF | 通道2的PWM同步信号输出 |
| 7 | 输出比较参考信号3 | Compare OC3Ref | OC3REF信号变化时 | TRGO跟随OC3REF | 通道3的PWM同步信号输出 |
| 8 | 输出比较参考信号4 | Compare OC4Ref | OC4REF信号变化时 | TRGO跟随OC4REF | 通道4的PWM同步信号输出 |
总结
本期博客深入剖析了STM32定时器的从模式控制器 ,这个常被忽视却极为强大的功能模块。通过理解TRGI (输入触发)和TRGO(输出触发)这对核心接口,我们掌握了定时器如何作为"从机"接收外部信号控制自身行为,以及如何作为"主机"向其他外设发送同步信号。八种从模式(从模式禁止、编码器模式、复位模式、门模式、触发模式、外部时钟模式1/2)和多种主模式(复位、使能、更新、输出比较脉冲等)为多定时器协同、外设同步、级联计数等复杂应用提供了硬件级的解决方案。