中断与异常
2026/9/29大约 2 分钟
Cortex-M 中断与异常
对于几乎所有的微控制器,中断都是一种常见的特性。
中断一般是由硬件(如外设和外部输入引脚)产生的事件,它会引起程序流偏离正常的流程(如给外设提供服务)。
当外设或硬件需要处理器的服务时,一般会出现下面的流程:
(1)外设确认到处理器的中断请求。
(2)处理器暂停当前执行的任务。
(3)处理器执行外设的中断服务程序(ISR),若有必要可以选择由软件清除中断请求。
(4)处理器继续执行之前暂停的任务。
所有的Cortex-M处理器都会提供一个用于中断处理的嵌套向量中断控制器(NVIC)。

除了中断请求,还有其他需要服务的事件,将其称为“异常”。按照ARM的说法,中断也是一种异常。Cortex-M处理器中的其他异常包括错误异常和其他用于OS支持的系统异常(如SVC指令)。处理异常的程序代码一般被称作异常处理,它们属于已编译程序映像的一部分。

在典型的Cortex-M4微控制器中,NVIC接收多个中断源产生的中断请求,如图7.1所示

Cortex-M3 和Cortex-M4的NVIC支持最多240个IRQ(中断请求)、1个不可屏蔽中断(NMI)、1个SysTick(系统节拍)定时中断及多个系统异常。多数IRQ由定时器、I/O端口和通信接口(如UART和I2C)等外设产生。
NMI通常由看门狗定时器或掉电检测器等外设产生,其余的异常则是来自处理器内核,中断还可以利用软件生成。


