飞控中的中断优先级与嵌套
一次炸机事故的复盘
去年夏天,我在调试一架四轴飞行器的悬停模式。电机突然失控,飞机直接侧翻炸机。黑匣子日志显示:IMU数据读取正常,但PWM输出在某个时刻出现了长达2ms的“空白期”。排查到最后,发现是SPI中断和定时器中断发生了优先级冲突——SPI中断处理时间过长,导致定时器中断被延迟,PWM更新错过了关键周期。
那次之后,我花了整整一周重新梳理飞控的中断系统。今天这篇笔记,就是那次事故的产物。
中断优先级:不是数字越小越好
很多初学者看到STM32的NVIC优先级分组,第一反应是“抢占优先级数字越小越优先”。这个理解没错,但飞控场景下,你需要思考的是:哪些中断绝对不能被打断?
我的经验排序(从高到低):
这里踩过坑:别把





