-

Cortex-M处理器中断与异常处理架构概述

2026-07-27

Cortex-M处理器内置了统一的中断/异常管理系统,支持多种系统异常和外部中断源。其中,编号1~15为系统异常(如复位、NMI、HardFault等),编号16及以上则为外部中断输入(这些中断可来源于片内外设或外部引脚,并不仅限于GPIO触发)。


1、优先级机制

绝大多数异常(包括所有外部中断)均支持可编程优先级,而部分关键系统异常(如复位、NMI、HardFault)具有固定优先级。固定优先级的数值用负数表示,使其天然高于所有可编程优先级(0~255),从而确保系统的关键故障和紧急响应得到最高保障。


2、优先级与嵌套规则

处理器是否响应当前发生的异常,以及何时响应,取决于该异常的优先级与当前处理器运行优先级之间的比较。若新异常的优先级高于(即优先级编号更小)当前正在处理的异常,则会触发抢占,形成异常/中断嵌套;反之,则需等待当前异常处理完成。这种嵌套机制是Cortex-M实现实时响应的核心能力之一。


3、优先级分组与子优先级

在可编程优先级范围内(Cortex-M3/M4设计上支持最多256级),通过系统控制块(SCB)中的优先级分组配置寄存器,可将每个优先级寄存器划分为两部分:

抢占优先级(分组优先级):决定是否能够抢占当前异常处理;

子优先级:仅在两个同抢占优先级的异常同时等待响应时起作用,此时子优先级数值更小的异常将优先得到处理。


4、实际实现差异

尽管Cortex-M3/M4架构理论上支持256个可编程优先级(最多128个抢占等级),但具体的优先级位数(即实际可用的优先级数量)由芯片厂商在实现时决定,开发者需参考对应器件手册确认。


分享