定时器中断学习汇总
TIM简介
- TIM(Timer)定时器
- 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断
- 16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时
- 不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能
- 根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型
定时器类型
STM32F103C8T6定时器资源:TIM1、TIM2、TIM3、TIM4
高级定时器
通用定时器
基本定时器
定时器中断基本结构
预分频器时序
计数器计数频率:CK_CNT = CK_PSC / (PSC + 1)
计数器时序
计数器无预装时序
计数器有预装时序
RCC时钟树
编码器接口介绍
Encoder Interface编码器接口
编码器接口可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度
每个高级定时器和通用定时器都拥有1个编码器接口两个输入引脚借用了输入捕获的通道1和通道2
正交编码器
输入捕获
- IC(Input Capture)输入捕获
- 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数
- 每个高级定时器和通用定时器都拥有4个输入捕获通道
- 可配置为PWMI模式,同时测量频率和占空比
- 可配合主从触发模式,实现硬件全自动测量
频率测量
输入捕获通道
“输入捕获通道”,一般是指 定时器(TIM)的输入捕获功能所用的通道
1. 输入捕获通道的概念
在 STM32(或 GD32、其他 MCU)里,定时器(TIM)有很多 通道(CH1、CH2、CH3、CH4)。
这些通道既可以用来 输出比较(PWM 输出),也可以用来 输入捕获。
输入捕获:就是把外部信号的上升沿/下降沿“捕获”到定时器里,并记录下那个时刻的计数值(CNT)。
这样 MCU 就能通过 比较两个捕获值的差值,来计算信号的周期、频率、占空比等。
2. 输入捕获通道的基本组成
每个定时器有若干个通道,例如 TIM2 有 4 个通道:
TIM2_CH1
TIM2_CH2
TIM2_CH3
TIM2_CH4
这些通道就叫 输入捕获通道。
作用:
通过 GPIO 引脚接收外部信号 → 输入到定时器的某个通道 → 硬件自动把计数器的值保存到捕获寄存器(CCR1、CCR2、CCR3、CCR4)。
3. 输入捕获通道的应用举例
测量外部信号频率
比如用 TIM2_CH1 捕获上升沿信号,记录 t1、t2 两次的 CNT 值。
周期 = t2 - t1
频率 = 定时器时钟 / (t2 - t1)
测量脉宽(占空比)
配置一个通道捕获上升沿,另一个通道捕获下降沿。
两个捕获值相减就得到高电平持续时间。
再结合周期就能得到占空比。
4. 举个具体的 STM32 例子
假如用 TIM3_CH2 (PB5) 做输入捕获:
配置 GPIO:
PB5 → 复用功能 → TIM3_CH2。
配置 TIM3:
预分频器设置好,保证定时器计数频率合适。
设置 TIM3_CH2 为输入捕获模式,捕获上升沿。
中断:
当有外部信号输入时,中断触发,CCR2 自动存储捕获到的 CNT 值。
软件读取 CCR2 值进行计算。
5. 关键寄存器(以 STM32 为例)
CCMRx:通道模式寄存器 → 设置输入捕获模式/滤波器/分频
CCER:通道使能寄存器 → 选择上升沿/下降沿捕获
CCR1~CCR4:捕获寄存器 → 保存捕获的 CNT 值
总结:
输入捕获通道就是定时器的一个功能引脚,用来捕获外部信号的时刻,从而实现频率、周期、占空比等的测量。
主从触发模式
输入捕获基本结构
PWMI基本结构
编码器接口基本结构
工作模式
定时器编码器配置