什么是NVIC?即嵌套向量中断控制器(Nested Vectored Interrupt Controller)。它是属于Cortex内核的器件,是非常强大与方便的嵌套向量中断控制器,不可屏蔽中断 (NMI)和外部中断都由它来处理,而SYSTICK不是由NVIC来控制的。
NVIC 特性
嵌套向量中断控制器 NVIC 包含以下特性:
● STM32F405xx/07xx 和 STM32F415xx/17xx 具有 82 个可屏蔽中断通道, STM32F42xxx
和 STM32F43xxx 具有多达 86 个可屏蔽中断通道(不包括 Cortex™-M4F 的 16 根中
断线)
● 16 个可编程优先级(stm32F4只使用了 4 位中断优先级)
● 低延迟异常和中断处理
● 电源管理控制
● 系统控制寄存器的实现
嵌套向量中断控制器 (NVIC) 和处理器内核接口紧密配合,可以实现低延迟的中断处理和晚
到中断的高效处理。
包括内核异常在内的所有中断均通过 NVIC 进行管理。更多关于异常和 NVIC 编程的说明,
请参考《 ARM Cortex™-M4F 技术参考手册》中的第 5 章:异常和第 8 章:嵌套向量中断控
制器。
通过阅读《STM32xxx参考手册》中“中断与事件”一章我们可以知道ST公司生产的stm32芯片对cotex内核的嵌套向量中断控制器 NVIC 的使用进行了一些小的改动,
改动一:减少了用于设置优先级的比特位。stm32只用了4个比特位来表示中断的优先级
1.中断优先级分组
Cortex-M3中有两个优先级的概念--抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定
这两种优先级。
具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套在
低抢占式优先级的中断中。
当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到
前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占
优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。
Cortex内核具有强大的异常响应系统,它把能够打断当前代码执行流程的事件分为异常(exception)和中断(interrupt),并把它们用一个表
管理起来,编号为0~15的称为内核异常,而16以上的则称为外部中断这个表就称为中断向量表。