You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32F4中IRQa与IRQb抢占、子优先级均相同时的执行顺序问题

关于NVIC中断优先级相同的问题解答

咱针对这两个问题逐一拆解,都是基于ARM Cortex-M系列常用的NVIC(嵌套向量中断控制器)场景哈:

1. 若IRQa与IRQb的抢占优先级和子优先级均相同,会出现什么情况?

当两个中断的抢占优先级(Preempt Priority)和子优先级(Sub Priority)完全一致时,有两个核心表现:

  • 无法抢占当前服务的中断:因为抢占优先级相同,NVIC不会允许新触发的同优先级中断打断正在执行的中断服务程序(ISR),必须等当前ISR执行完毕,或者主动挂起后,才会处理另一个中断。
  • 同时触发时按硬件IRQ编号排序:如果两个中断在同一时刻触发,NVIC会根据它们的硬件IRQ编号来决定响应顺序——编号更小的中断会被优先服务。这是硬件层面固有的排序逻辑,优先级配置相同的时候就靠这个来区分先后。

2. 假设配置为第1行(IRQa, 0, 0)、第2行(IRQb, 0, 0),哪个中断会先被服务?

答案还是要看IRQ的硬件编号:

  • 如果IRQa的硬件编号比IRQb小,那IRQa会先被NVIC响应并服务;
  • 反之,如果IRQb的编号更小,那它会优先得到处理。

毕竟两者的抢占优先级和子优先级都设成了(0,0),完全没有配置层面的优先级差异,NVIC只能依靠硬件本身给每个中断分配的固有编号来排序——编号越小,在同配置优先级下的“隐性优先级”越高。

内容的提问来源于stack exchange,提问作者Sarthak Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 09:22:38