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