嵌入式调试时经常遇到反常情况,定时器的使能位、中断优先级都按手册配置完成,运行后完全进不了中断服务函数,反复读寄存器值也显示配置正确。问题大多不是参数写错,是时钟和硬件的隐性细节没处理到位。

1. 定时器外设时钟没开
很多MCU的定时器时钟默认处于关闭状态,单独配置定时器寄存器不会自动开启时钟。
外设时钟门控没解锁,定时器本身根本没有工作时钟,自然无法触发中断请求。
2. 更新中断标志没清
定时器初始化前,硬件自动置起了更新中断标志位。
配置完成后这个旧标志位没有手动清零,中断会直接被硬件屏蔽,后续新的计数事件无法触发中断。
3. 全局中断没打开
部分工程默认关闭了CPU层面的全局中断总开关。
即使定时器外设的中断全部配置完成,中断信号也无法送到CPU内核,自然跳不到中断服务函数。
4. 快速定位修复
先读取定时器的SR状态寄存器,确认计数溢出标志位是否正常置起。
按顺序开启外设时钟、清除旧中断标志、打开全局中断,定时器中断就能正常触发。
本文凡亿教育原创文章,转载请注明来源!
暂无评论