TIM
Timer 定时器 STM32片上外设
定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断
不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、主从触发模式、编码器接口等多种功能
根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型
类型 | 编号 | 总线 | 功能 |
---|---|---|---|
基本定时器 | TIM6、TIM7 | APB1 | 拥有定时中断、主模式触发DAC的功能 |
通用定时器 | TIM2、TIM3、TIM4、TIM5 | APB1 | 拥有基本定时器全部功能, 并额外具有内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等功能 |
高级定时器 | TIM1、TIM8 | APB2 | 拥有通用定时器全部功能, 并额外具有重复计数器、死区生成、互补输出、刹车输入等功能 |
不同定时器的定时器数量不同, 使用前要查阅对应的技术手册
STM32F103C8T6 定时器资源:TIM1、TIM2、TIM3、TIM4
一、基本定时器
时基单元
- 16 位计数器
执行定数计时的寄存器 计数器 - 预分频器
对计数器的时钟进行分频,使得计数更灵活 - 自动重装寄存器
计数的目标值,自动重装载
时基单元的寄存器都为 16 位寄存器
在 72MHz 计数时钟下可以实现最大 59.65s 的定时
1.基本功能
定一个时间,定时器每隔一个时间产生一次中断
来实现每隔一个固定时间执行一段程序
预分频器、计数器、自动重装载寄存器
定时器产生更新中断、更新事件
只支持向上计数模式
2.主模式输出(仅DAC)
让内部硬件在不受程序的控制下实现自动运行,减轻 CPU 的负担
避免 DAC 频繁占用 CPU 主程序的运行或影响其他中断的响应
使用主从触发模式,将定时器的更新事件映射到 TRGO(Trigger Out)的位置
TRGO 转换到 DAC 的触发引脚上,就无需通过中断来触发 DAC 转换
实现硬件自动化
二、通用定时器
支持向上计数、向下计数、三种中央对齐计数的多种计数模式
(一般选用向上计数)
3.内外时钟源选择
1.内部时钟(RCC)
系统频率 72MHz
2.外部时钟(ETR 引脚)
外部时钟模式 2
AFIO 复用 GPIO,输入外部时钟信号 TIMx_ETR,ETR
极性选择、边缘检测、预分频得到 ETRP
再经过输入滤波得到 ETRF
- ETR External Trigger Input
外部触发输入,允许定时器通过外部信号触发 - ETRP External Trigger Prescaler
外部触发预分频器,用于调整外部触发信号的频率
ETRF External Trigger Filter
外部触发滤波器,用于减少外部信号的噪声,确保触发信号的稳定性
4.触发输入 TRGI
外部时钟模式 1
TRGI(Timer Input Trigger)
定时器输入触发信号
TRC(Timer Remapping Capability)
定时器重映射功能,定时器的输入和输出可以被重映射到不同的引脚或信号,以适应不同的应用需求。
1. ETRF 输入(ETR 引脚)
ETR 引脚经过变换得到的信号 ETRF
2. ITR 内部触发输入(其他定时器的输出)
Internal Trigger Input
允许定时器通过内部信号触发。通常用于将一个定时器的输出 TRGO 连接到另一个定时器的输入,实现定时器之间的同步或级联。
3. TI1F_ED 捕获输入(CH1 的边沿)
输入捕获单元 :TIMx_CH1引脚获得时钟信号,
经过输入滤波器和边沿检测器得到信号 TI1F_ED (Edge)
(加上 ED 后缀,表示边沿:上升沿/下降沿有效)
4. TI1FP1 TI2FP2 输入(CH1、CH2 的边沿)
CH1 引脚的 TI1FP1
CH2 引脚的 TI2FP2
- TGI(Timer Group Interrupt)
定时器组中断
2. 主模式输出(范围较广)
TRGO Timer Output Trigger 定时器输出触发信号,
将内部一些事件映射到 TRGO 引脚
可以用来触发其他外设,如ADC、DAC或其他定时器。
5. 输入捕获电路
四个通道,对应 CH1-CH4 引脚
用于测量方波的频率
输入捕获通道设置异或门,实际上是为三相无刷直流电机服务的
前三个通道接上无刷电机的霍尔传感器,定时器就作为无刷电机的接口定时器,来驱动换相电路工作
输入信号进入两套滤波器和边沿检测器(选择触发方式)
CH1 经过滤波和极性选择,得到
TI1FP1 (TI1 Filter Polarity 1) 给通道 1
TI1FP2 (TI1 Filter Polarity 2) 给通道 2
CH2 经过滤波和极性选择,得到
TI2FP1 (TI1 Filter Polarity 1) 给通道 1
TI2FP2 (TI1 Filter Polarity 2) 给通道 2
灵活切换后续捕获电路的输入
将一个引脚的输入,同时映射到两个捕获单元,同时对一个引脚捕获,实现PWMI 模式(同时测量 PWM 信号的周期和占空比)
一个通道使用上升沿触发,用来捕获周期
第二个通道使用下降沿触发,用来捕获占空比
6. 输出比较电路
TIM 输出比较
四个通道,对应 CH1-CH4 引脚
用于输出 PWM 波形、驱动电机
捕获/比较寄存器
输入捕获电路和输出比较电路共同的部分,引脚也共用
7.编码器接口
输入:使用定时器捕获的前两个通道
CH1: TI1FP1、 CH2:TI2FP2
输出:从模式控制器
控制 CNT 计数器的计数时钟和计数方向
读取正交编码器的输出波形,编码电机测速
三、高级定时器
8. 重复次数计数器
实现每隔几个计数周期才发生一次更新事件和更新中断
相当于对更新信号做分频
9. DTG 死区生成电路
Dead Time Generate 死区生成
原来的输出通过输出控制模块,变为两个互补的输出
可以生成两路互补的 PWM 波形,为驱动三相无刷电机
可以用来用于驱动外部推挽电路
注意只有前三路发生改变(作为互补输出)
原因是三相无刷电机的驱动电路只需要三路桥臂
为了防止互补输出 PWM 驱动桥臂时,开关切换瞬间由于器件不理想的原因造成短暂直通现象,所以增加死区生成电路
在开关切换瞬间,产生一定时长死区,让上下管全部关断
10. 刹车输入
为电机驱动提供安全保障
- 外部引脚 BKIN(Break IN)产生刹车信号
- 内部时钟失效,产生故障 (CSS 时钟安全系统)
刹车输入中,一旦 CSS 检测到外部时钟失效,通过或门反映到输出比较
控制电路会自动切断电机的输出,防止意外发生