一、什么是中断
1.1 中断和异常
异常主要是指来自CPU内部的意外事件,比如执行了未定义指令、算术溢出、除零运算等发生在CPU内部的意外事件,这些异常的发生,会引起CPU运行相应的异常处理程序;
中断一般来自硬件(如片上外设、外部I/O输入等)发生的事件,当这些硬件产生中断信号时,CPU会暂停当前运行的程序,转而去处理相关硬件的中断服务程序。
但无论是异常还是中断,都会引起程序执行偏离正常的流程,转而去执行异常/中断的处理函数。如果中断信号的产生原因来自CPU内部,则称之为异常;如果中断信号来自CPU外部,则称之为中断。有些场合如果没有明确指出是异常还是中断,就统称为中断。
1.2 何为中断?
所谓中断是指系统发生某一事件后,CPU暂停正在执行的程序转去执行处理该事件的程序过程,处理中断事件的程序称为中断服务程序,产生中断信号的那个部件称为中断源。硬件的中断机构与处理这些中断的程序统称为中断系统。
当中断发生时,硬件机构自动地进入响应中断过程,由操作系统的中断服务程序对中断事件进行处理。
中断优先级:当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先响应更加紧急的中断源。
中断嵌套:当一个中断程序正在运行时,又有新的更高优先级的中断源申请中断,CPU再次暂停当前中断程序,转而去处理新的中断程序,处理完成后依次进行返回
二、嵌套向量中断寄存器(NVIC)
2.1 NVIC特性
嵌套向量中断控制器 NVIC 包含以下特性:● STM32F405xx/07xx 和 STM32F415xx/17xx 具有 82 个可屏蔽中断通道, STM32F42xxx和 STM32F43xxx 具有多达 86 个可屏蔽中断通道(不包括 Cortex™-M4F 的 16 根中断线)● 16 个可编程优先级(使用了 4 位中断优先级)● 低延迟异常和中断处理● 电源管理控制● 系统控制寄存器的实现
在谈论嵌套向量中断控制器时,中断嵌套是主要概念。这个概念有点类似于嵌套的for循环,即在另一个中断(具有较低优先级)中处理一个中断(具有较高优先级)。这可以使用 NVIC 来实现,因