在嵌入式开发中,"中断里加延时"是新手最容易踩的坑,没有之一。看起来只是加了一行代码,结果整个系统直接瘫痪。
1、为什么会卡死?
以STM32的HAL_Delay()为例,它依赖SysTick中断来更新计数。
问题在于:SysTick优先级通常比外部中断低。
当你在高优先级中断里调用HAL_Delay(),程序等着SysTick更新计数。但SysTick因为被高优先级中断阻塞,根本无法执行。
结果:计数永远不增加,程序死锁在延时函数里,系统彻底卡飞。
2、还有哪些危害?
后续中断无法响应,关键事件丢失
系统实时性崩溃,看门狗直接复位
CPU空转浪费资源,功耗飙升
3、那到底能不能加延时?
原则上:不能加标准延时函数。但有替代方案。

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

精确长延时: 启动一个硬件定时器,中断立即退出,定时器到时再触发后续逻辑。
本文凡亿教育原创文章,转载请注明来源!

扫码关注








































