STM32定时器详解:从基本原理到高级应用实践,零基础入门指南(第96步)
主题 | 内容 | 教学目的/扩展视频 |
---|---|---|
TIM定时器重点课程 |
定时器,捕获器,比较器,PWM,单脉冲。高级TIM。定时器中断。 | 了解TIM使用 |
师从洋桃电子,杜洋老师
📑文章目录
一、定时器核心原理
1.1 硬件架构解析
溢出
匹配
捕获
时钟源
预分频器
计数器
中断/DMA
输出比较
输入捕获
1.2 核心参数公式
定时周期计算公式:
T = \frac{(ARR+1) \times (PSC+1)}{F_{CLK}}
二、定时器三大功能矩阵
2.1 功能对比表
功能类型 | 触发机制 | 典型应用场景 | 关键寄存器 |
---|---|---|---|
普通定时 | 计数器溢出触发 | 系统心跳/延时控制 | TIMx_ARR, TIMx_PSC |
输入捕获 | 边沿触发捕获 | 脉冲宽度/频率测量 | TIMx_CCR, TIMx_SR |
输出比较/PWM | 比较匹配触发 | 电机控制/LED调光 | TIMx_CCMR, TIMx_CCER |
2.2 应用场景拓扑图
工业控制
电机PWM驱动
编码器信号解析
机械臂控制
转速测量
消费电子
呼吸灯效果
触摸按键检测
三、普通定时功能实践
3.1 定时器工作流程
MCU
Timer
配置ARR=9999, PSC=7199
使能更新中断
72MHz/7200=10KHz
每次计数0.1ms
10000次后溢出(1秒)
触发TIM3中断
执行LED翻转程序
MCU
Timer
3.2 配置要点说明
四、输入捕获深度解析
4.1 脉冲测量原理
graph LR
A[信号输入] --> B{边沿检测}
B -->|上升沿| C[记录T1]
B -->|下降沿| D[记录T2]
D --> E[脉宽=T2-T1]
C -->|周期测量| F[记录T3]
F --> G[频率=1/(T3-T1)]
4.2 工业级应用案例
- 超声波测距:测量回波时间差
- 旋转编码器:解析正交信号
- 电源管理:检测电压过零时刻
五、输出比较与PWM实战
5.1 PWM生成机制
CCR匹配
计数器
比较寄存器CCR
电平翻转
生成PWM波形
ARR值
决定周期
决定占空比
5.2 高级PWM应用
模式类型 | 波形特点 | 适用场景 |
---|---|---|
边沿对齐 | 固定频率可变占空比 | LED调光 |
中央对齐 | 对称波形减少谐波 | 电机驱动 |
互补输出 | 带死区控制的互补信号 | H桥电路 |
六、程序架构解析
6.1 初始化流程
使能时钟
配置时基参数
设置工作模式
配置中断/DMA
启动定时器
6.2 关键代码片段
// 定时器初始化示例
TIM_TimeBaseInitTypeDef TIM_InitStruct;
TIM_InitStruct.TIM_Period = 9999; // 1秒周期
TIM_InitStruct.TIM_Prescaler = 7199; // 7200分频
TIM_InitStruct.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_InitStruct);
// 中断服务函数示例
void TIM3_IRQHandler(void) {
if(TIM_GetITStatus(TIM3, TIM_IT_Update)) {
GPIO_WriteBit(LED_PORT, LED_PIN, !GPIO_ReadOutputDataBit(LED_PORT, LED_PIN));
TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
}
}
七、扩展应用与优化
7.1 高级应用场景
7.2 性能优化技巧
优化方向 | 实施方法 | 效果提升 |
---|---|---|
中断效率 | 使用DMA替代中断 | 减少CPU负载 |
精度提升 | 启用重复计数器 | 扩展定时范围 |
功耗控制 | 动态调整预分频值 | 平衡性能与功耗 |
八、常见问题解答
Q1:定时器中断响应不及时?
Q2:PWM输出频率偏差大?
Q3:输入捕获值跳变异常?
附:定时器寄存器速查表
寄存器 | 功能描述 | 访问方式 |
---|---|---|
TIMx_CR1 | 控制寄存器1 | 读写 |
TIMx_SMCR | 从模式控制寄存器 | 特殊配置 |
TIMx_DIER | DMA/中断使能寄存器 | 事件控制 |
TIMx_CCMR1/2 | 捕获/比较模式寄存器 | 通道配置 |
九、相关资源
[1] 洋桃电子B站课程-STM32入门100步
[2] STM32官方文档手册
[3] STM32F103固件函数库用户手册(中文)
[4] 定时器中断测试程序
[5] 定时器原理与应用.pptx
💬 技术讨论(请在评论区留言~)
📌 下期预告:下一期将探讨CRC与芯片ID原理,欢迎持续关注!
点击查阅🔍往期【STM32专栏】文章
版权声明:本文采用[CC BY-NC-SA 4.0]协议,转载请注明来源
实测开发版:洋桃1号开发版(基于STM32F103C8T6)
更新日志:v1.0 初始版本(2025-04-08)
作者:触角01010001