中断
CM3 的中断/异常依赖于一个异常向量表,0~15 的编号为系统所用,大于 16 的编号为芯片公司自行定义的中断,最大支持到中断标号 255。主要分为下面几类
- Reset Handler:复位信号;
- NMI:不可屏蔽信号,通过接 NMI 引脚;
- 系统各种 fault:包括 HardFault,BusFault,MemManageFault,UsageFault;
- SVC 系统调用;
- PendSV:给 OS 调度预留;
- IRQ #xxx:芯片公司定义; 中断向量表是一张软硬件约定好的一个表,默认地址放在 0x0000_0000 开始(0x0000_0000 为 MSP,Reset Handler 放在 0x0000_0004),当发生对应中断/异常的时候,CPU 到这张表对应的地址去获取 ISR 的入口,并跳转到对应的 ISR 执行。 在CM3处理器中有一个NVIC(中断向量嵌套控制器)软件层面,它是以一组寄存器的形式体现出来,软件可以编程 NVIC 寄存器,实现中断优先级,中断使能,中断禁能,清除 Pending,手动 Pending 等操作。NVIC 能够支持中断嵌套,即高优先级的中断抢占低优先级的中断,但自己无法抢占自己。