060、Zephyr RTOS内核基础:中断服务例程编写

发布时间:2026/6/26 4:08:34

060、Zephyr RTOS内核基础:中断服务例程编写 Zephyr RTOS内核基础:中断服务例程编写上周调试一个工业传感器采集模块,板子跑着跑着突然死机,看门狗都没来得及喂。用逻辑分析仪抓IRQ引脚,发现中断触发频率异常——每秒超过2000次,而我的ISR里居然还塞了个printk。这就是典型的“中断里干重活”翻车现场。今天这篇笔记,就从我踩过的坑开始,把Zephyr的中断服务例程(ISR)讲透。中断向量表与连接器脚本的“潜规则”Zephyr的中断向量表不像裸机开发那样直接写在启动文件里。它通过IRQ_CONNECT宏在编译期静态生成,最终由连接器脚本zephyr/linker/intlist.ld编排。这里有个容易忽略的点:中断优先级必须在0到CONFIG_NUM_IRQ_PRIORITIES-1之间。默认配置下,Zephyr支持16级优先级(0最高,15最低),但如果你在prj.conf里改了CONFIG_NUM_IRQ_PRIORITIES,记得同步检查所有外设驱动的中断优先级设置——我见过有人把UART中断优先级设成负数,结果编译通过但运行时中断从不触发。// 正确写法:优先级0-15IRQ_CONNECT

相关新闻