0
收藏
微博
微信
复制链接

中断里放了个延时,程序直接卡飞

2026-06-25 09:44
5

在嵌入式开发中,"中断里加延时"是新手最容易踩的坑,没有之一。看起来只是加了一行代码,结果整个系统直接瘫痪。

1、为什么会卡死?

以STM32的HAL_Delay()为例,它依赖SysTick中断来更新计数。

问题在于:SysTick优先级通常比外部中断低。

当你在高优先级中断里调用HAL_Delay(),程序等着SysTick更新计数。但SysTick因为被高优先级中断阻塞,根本无法执行。

结果:计数永远不增加,程序死锁在延时函数里,系统彻底卡飞。

2、还有哪些危害?

后续中断无法响应,关键事件丢失

系统实时性崩溃,看门狗直接复位

CPU空转浪费资源,功耗飙升

3、那到底能不能加延时?

原则上:不能加标准延时函数。但有替代方案。

1.png

微秒级消抖(几十微秒): 用空循环代替,简单粗暴。

2.png

精确长延时: 启动一个硬件定时器,中断立即退出,定时器到时再触发后续逻辑。


本文凡亿教育原创文章,转载请注明来源!

登录后查看更多
0
评论 0
收藏
侵权举报
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。

热门评论0

相关文章

嵌入式大杂烩

分享嵌入式电子级设计的经验、心得、程序设计架构及测试

开班信息