目录
1. 中断/异常介绍
ARM Cortex-M中的异常和中断用于响应和处理各种事件,其中异常是处理器预先定义的一些特定事件,异常拥有固定的优先级,用户不可更改,常见的异常包括:
1)复位异常:上电或复位时发生
2)NMI:不可屏蔽中断,用来处理高优先级的紧急事件
3)HardFault: 硬件错误,处理系统的严重错误,如存储器访问错误,系统总线错误等
4)软件错误:CPU执行某个操作时导致的错误,如除零异常、非法地址访问异常等
5)SVC:系统调用,用在用户模式切花到特权模式以执行系统服务
6)PendSV:可挂起系统调用,用在多任务操作系统的上下文切换
7)SysTick:系统滴答定时,常用来作为操作系统的时基
中断是由CPU外部设备(GPIO/其它外部引脚)或内部外设(Timer/ADC/USART)产生的信号,优先级可由用户自行控制,常用在实时和多任务操作的场景中。
2. Cortex-M的中断体系理论知识
如图Fig1所示,多个外部中断源最终汇聚至NVIC中断控制器中(管理多个中断源的使能开关、优先级等,提供‘异常向量表’,NVIC中的每个异常/中断都有一个中断编号),NVIC会从中获取优先级最高的中断,随后向CPU发出最高优先级的中断信号来处理。