STM32F103C8T6--定时器

基本概念

定时器本质上是一个计数器,它可以对内部时钟或外部输入信号进行计数。当计数值达到设定的阈值时,会触发相应的事件(如中断、输出电平变化等)。这些定时器功能多样,可用于生成 PWM 信号、测量输入信号频率、产生定时中断等。

|------------|---------------------|------------|----------------------------------------------------|
| 类型 | 编号 | 总线 | 功能 |
| 高级定时器 | TIM1、TIM8 | APB2 | 拥有通用定时器全部功能,并额外具有重复计数器、死区生成、互补输出、刹车输入等功能,主要用于电机控制 |
| 通用定时器 | TIM2、TIM3、TIM4、TIM5 | APB1 | 拥有基本定时器全部功能,并额外具有内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等功能 |
| 基本定时器 | TIM6、TIM7 | APB1 | 拥有定时中断 、主模式触发DAC的功能 |

(STM32F103C8T6只有TIM1 - 4)

时基单元

  1. TIMx_PSC:预分频器寄存器,设置时钟分频系数
  2. TIMx_ARR:自动重装载寄存器,设置计数上限
  3. TIMx_CNT:计数器寄存器,存储当前计数值

++++分频:++++ 预分频器(prescaler PSC)可以设置分频系数,所谓分频就是分组,比如二分频,就是两次计数算一次,通过PSC可以调整每秒计数次数,++++PSC 控制计数速度++++ (每秒计数次数),++++ARR 控制计数范围++++ (计数到多少归零)。两者互不影响:改变 ARR 仅改变溢出周期。CNT 的计数频率由 PSC 动态分频决定。

影子寄存器:PSC和ARR可以使用影子寄存器,作用是在这次计数周期结束后才改变值。

时钟源

ITR 是定时器(如 TIM2、TIM3、TIM4 等)的内部触发输入通道 ,专门用于接收其他定时器(主定时器)的触发信号。其核心作用是:将一个定时器(主定时器)的输出作为另一个定时器(从定时器)的触发源,实现定时器之间的同步(如同时启动、计数复位、周期联动等)。

TIM_SelectInputTrigger();触发源选择

TIM_TS_ITR0: Internal Trigger 0

TIM_TS_ITR1: Internal Trigger 1

TIM_TS_ITR2: Internal Trigger 2

TIM_TS_ITR3: Internal Trigger 3

TIM_TS_TI1F_ED: TI1 Edge Detector

TIM_TS_TI1FP1: Filtered Timer Input 1

TIM_TS_TI2FP2: Filtered Timer Input 2

TIM_TS_ETRF: External Trigger input

TI1_ED(Timer Input 1 Edge Detection,定时器输入通道 1 的边沿检测) 是输入捕获模式下的一种触发方式,用于检测定时器输入通道 1(TI1)上的双边沿(上升沿和下降沿) 跳变,并触发捕获事件。

TI1FP1 的含义

  • TI1:第一个输入通道(Timer Input 1),是定时器外部输入信号的原始物理通 TIMx_CH1
  • FP1 :是 "Filtered and Polarized 1" 的缩写,即 "经过滤波和极性选择后的信号",其中:
    • Filtered(滤波):原始输入信号(TI1)会经过数字滤波处理,减少噪声干扰;
    • Polarized(极性):可配置信号的有效边沿(上升沿 / 下降沿 / 双边沿);
    • 1:对应捕获比较通道 1(IC1)。
  • TI1FP1:TI1 映射到 IC1(直接映射,TIM_ICSelection_DirectTI);
  • TI1FP2:TI1 映射到 IC2(交叉映射,TIM_ICSelection_IndirectTI)。

ETR(External Trigger Input,外部触发输入)CH(输入通道,如 TI1~TI4,对应定时器的 Channel 1~4) 都是用于接收外部信号的接口,但两者的功能定位、应用场景和硬件设计有显著区别。

  • ETR :是定时器的专用外部触发控制接口 ,核心作用是控制定时器的运行状态(如作为时钟源驱动计数器、触发定时器启动 / 复位等),更偏向于 "对定时器本身的控制"。
  • CH(TI1~TI4) :是定时器的通用输入捕获通道 ,核心作用是获取外部信号的细节信息(如跳变时刻、脉冲宽度等),更偏向于 "对外部信号的测量与记录"。

ETR 可以直接控制时基单元的运行,而 CH 通道不会影响时基单元的核心工作逻辑

  • 若需要用外部信号控制定时器的运行 (如作为时钟源、触发复位),选ETR
  • 若需要测量外部信号的细节 (如跳变时刻、脉冲宽度、周期),选CH(TI1~TI4)

从模式

TIM_SelectSlaveMode();从模式选择

#define TIM_SlaveMode_Reset 复位模式:触发时复位CNT,持续计数;

#define TIM_SlaveMode_Gated 门控模式:触发信号电平控制CNT是否计数;

#define TIM_SlaveMode_Trigger 触发模式:触发边沿启动CNT计数(不复位)

#define TIM_SlaveMode_External1 外部时钟模式 1:触发信号作为CNT的计数时钟。

外部时钟模式1:和外部时钟模式2基本相同

复位模式:每次触发都会复位时基单元,即计数器清0,自动重装载器和预分频器的影子寄存器更新。使用复位模式需要给时钟源选择内部时钟或外部时钟模式2。由于没有触发CNT==ARR,没有更新事件产生,即使配置更新中断也不会触发。

门控模式:触发信号电平控制CNT是否计数,可以设置开门边沿,开门才计数。

触发模式:触发边沿启动CNT计数(不复位),只能开不能关。


触发模式可以配合单脉冲模式(计数到ARR更新后停在0)

TIM_SelectOnePulseMode();

TIM_OPMode_Single

TIM_OPMode_Repetitive

输入捕获

当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中。

每个高级定时器和通用定时器都拥有4个输入捕获通道

可配置为PWMI模式,同时测量频率和占空比

可配合主从触发模式,实现硬件全自动测量

TIM_SelectOutputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_TRGOSource);主模式

* - For all TIMx

* @arg TIM_TRGOSource_Reset: The UG bit in the TIM_EGR register is used as the trigger output (TRGO).

* @arg TIM_TRGOSource_Enable: The Counter Enable CEN is used as the trigger output (TRGO).

* @arg TIM_TRGOSource_Update: The update event is selected as the trigger output (TRGO).

*

* - For all TIMx except TIM6 and TIM7

* @arg TIM_TRGOSource_OC1: The trigger output sends a positive pulse when the CC1IF flag is to be set, as soon as a capture or compare match occurs (TRGO).

* @arg TIM_TRGOSource_OC1Ref: OC1REF signal is used as the trigger output (TRGO).

* @arg TIM_TRGOSource_OC2Ref: OC2REF signal is used as the trigger output (TRGO).

* @arg TIM_TRGOSource_OC3Ref: OC3REF signal is used as the trigger output (TRGO).

* @arg TIM_TRGOSource_OC4Ref: OC4REF signal is used as the trigger output (TRGO).

每个通用定时器(如 TIM2~TIM5)和高级定时器(如 TIM1、TIM8)包含 4 个独立的输出比较通道(OC1~OC4),可同时控制 4 路信号(相互独立)。

输出比较

输出比较模式下,定时器会将计数器值(CNT)与比较寄存器值(CCR)进行比较,当两者相等时触发输出动作(如翻转电平、置高 / 置低)。

每个通道包含:

  1. 比较寄存器(CCR):存储用于比较的目标值。
  2. 输出模式控制器:根据 CNT 与 CCR 的比较结果,控制输出动作,PWM 模式 1||2、翻转模式、强制高 / 低等。
  3. 输出极性控制:设置输出信号的极性(高电平有效或低电平有效)。
  4. 输出使能控制:决定是否启用该通道的输出。

PWM(Pulse Width Modulation,脉冲宽度调制)是一种通过调节脉冲信号的占空比来控制平均电压或功率的技术。

  1. 周期(T):一个完整脉冲的持续时间,由定时器的自动重装载值(ARR)决定。
  2. 频率(f):周期的倒数,即 f = 1/T,单位为 Hz。f = 系统时钟 / (PSC+1) / (ARR+1).
  3. 占空比(Duty Cycle):高电平时间(Ton)占整个周期的比例,计算公式为:
    Duty Cycle = Ton / T × 100%
  4. PWM分辨率: Reso = 1 / (ARR + 1)

编码器

TIM_EncoderInterfaceConfig(TIM_TypeDef* TIMx, uint16_t TIM_EncoderMode,uint16_t TIM_IC1Polarity, uint16_t TIM_IC2Polarity)

TIM_EncoderMode_TI1: Counter counts on TI1FP1 edge depending on TI2FP2 level.

TIM_EncoderMode_TI2: Counter counts on TI2FP2 edge depending on TI1FP1 level.

TIM_EncoderMode_TI12: Counter counts on both TI1FP1 and TI2FP2 edges depending on the level of the other input.

相关推荐
徽京人1 小时前
VS Code 接入Esp 32步骤
vscode·单片机·嵌入式硬件
QH139292318802 小时前
Keysight N5183B N5183B 微波模拟信号发生器
网络·单片机·嵌入式硬件·集成测试·信息与通信
笨笨饿3 小时前
#110_SCH3000 平台图传系统配置指南:从 DVP 摄像头到 UVC/WiFi 双通道传输
c语言·stm32·单片机·嵌入式硬件·物联网·vim
捷瑞电子工坊3 小时前
FreeRTOS事件组:多任务同步的利器
stm32·嵌入式·freertos·实时操作系统·标准外设库·事件组·任务同步
千秋岁rr5 小时前
5.0 TIM
单片机·嵌入式硬件
qq_401700415 小时前
ADC基准电压与参考电压详细解读:以STM32和28335为例
stm32·单片机·嵌入式硬件
小僧景贤5 小时前
STM32 startup.s 启动文件与 .map 映射文件深度技术解析(md/hd 版本差异化对比)
stm32·内存映射·startup.s·map 文件·单片机启动流程
zcmodeltech7 小时前
水利水电沙盘模型控制系统设计与实现:多场景多工况联动方案
网络·stm32·嵌入式硬件·制造·多分类
2601_966799047 小时前
CH398 技术解析:USB 3.0转千兆以太网单芯片方案与内置电源设计要点
单片机·嵌入式硬件
zlinear数据采集卡8 小时前
数据采集卡从入门到精通(38):上位机开发实战——Python/QT/LabVIEW的技术选型与分层架构
python·单片机·嵌入式硬件·qt·fpga开发·开源·labview