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

关于Cortex-M执行高优先级故障处理时低优先级外设中断行为的问询

Cortex-M执行高优先级故障处理程序时遇到低优先级外设中断的行为分析

核心结论

低优先级外设中断会被挂起(Pending),既不会被直接忽略,也不会触发硬故障,待故障处理程序执行完毕后才会被响应。

详细机制说明

  1. 优先级层级规则
    Cortex-M架构中,系统故障类异常(如HardFault、MemManage、BusFault等)的优先级为负数,属于最高优先级梯队;所有外设中断的优先级均为非负数,优先级低于故障类异常。硬件会严格按照优先级高低调度异常/中断的执行。

  2. 当前异常执行时的中断处理逻辑
    当CPU进入高优先级故障处理程序时,硬件会自动锁定当前的优先级状态:

  • 低优先级的外设中断无法抢占正在执行的高优先级故障流程,会被标记为挂起状态;
  • 这类中断不会触发新的硬故障,因为它的优先级未达到抢占当前异常的要求,也不属于故障触发条件。
  1. 后续处理流程
    只有当故障处理程序执行完成,CPU退出异常处理流程并恢复全局中断的使能状态后,才会检查挂起的中断队列,按优先级依次处理被挂起的外设中断。

注意:如果在故障处理程序中人为修改FAULTMASK或PRIMASK寄存器(主动降低中断屏蔽级别),低优先级外设中断可能会被提前响应,但这属于非常规操作,可能引发异常嵌套风险,不推荐在故障处理流程中这么做。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 21:26:17