NVIC(nested vectored interrupt controller)
NVIC 是嵌套向量中断控制器,控制着整个芯片中断相关的功能,它跟内核紧密耦合,是内核里面的一个外设。但是各个芯片厂商在设计芯片的时候会对 Cortex-M3 内核里面的 NVIC 进行裁剪,把不需要的部分去掉,所以说 STM32的 NVIC 是 Cortex-M 3 的 NVIC 的一个子集。
M3 的 NVIC 支持最多240 个 外部中断(即可屏蔽中断)和16个内核中断(M3 内核中断线),16个可编程优先等级(即每个中断有4bit 可以配置中断优先级,2^4=16)
PS: F103 只有60个可屏蔽中断,F107 有68个
NVIC_TYPE结构体如下
typedef struct
{
__IO uint32_t ISER[8]; /*!< Offset: 0x000 Interrupt Set Enable Register */
uint32_t RESERVED0[24];
__IO uint32_t ICER[8]; /*!< Offset: 0x080 Interrupt Clear Enable Register */
uint32_t RSERVED1[24];
__IO uint32_t ISPR[8]; /*!< Offset: 0x100 Interrupt Set Pending Register */
uint32_t RESERVED2[24]