异常会引发程序控制的变化。在异常发生时,处理器中止当前的任务,转而执行异常处理程序,异常处理完成后,会继续执行刚才的任务。异常分为不少种,中断是其中之一。Cortex-M0处理器最多支持32个外部中断(IRQ)和一个不可屏蔽中断(NMI),中断事件的处理叫作中断服务程序(ISR),中断通常由片上的IO口的外部输入产生(边沿触发和电平触发)。编程
Cortex-M0处理器上可用的中断数量不肯定,由厂商决定,最多32个外部中断。若是系统的外设不少,因为中断数目有限,多个中断源可能使用同一个中断链接。ui
除了IRQ和NMI,M0处理系还支持不少系统异常,它们主要用于操做系统和错误处理。spa
异常类型 异常编号 描述操作系统
Reset 1 上电复位或系统复位blog
NMI 2 不可屏蔽中断事件
Hard fault 3 用于错误处理,系统检测到错误后被激活get
SVCall 11 请求管理调用,在执行SVC指令被激活,主要用做操做系统博客
PendSV 14 可挂起服务(系统)调用硬件
SysTick 15 系统节拍定时器异常,通常在OS种用做周期系统节拍异常定时器
IRQ0-IRQ31 16-47 中断,可来自于外部,也可来自片上外设
每个异常都对应一个异常编号,这在包括IPSR在内的许多寄存器种都有提现,并且这个异常编号还指明了异常向量的地址。在设备驱动库种,异常编号和中断编号是相互独立的。系统异常使用负数定义,中断使用0-31正数定义。
复位是一种特殊的异常,数值为1,在IPSR中不可见。
除了NMI,硬件错误和复位,其余全部异常的优先级都是可编程的,NMI和硬件错误的优先级是固定的,而且比其余异常的优先级高。