1. 中断的基本概念
1.1 异常类型
Cortex-M处理器中异常编号为1~15为系统异常,编号为16及以上为外部中断异常,可由片上外设或者外设中断源产生。其中复位、NMI、HardFault异常的优先级固定不变,其它异常可编程。
系统异常表:
中断列表:
1.2 中断优先级分组
每个中断都有一个8位的优先级寄存器,用来配置中断的优先级。每个优先级占8位,4个相临的优先级寄存器组成1个32位的寄存器。如下:
其中:
Cortex-M处理器中有三个固定的优先级和256个可编程的优先级。Cortex-M处理器把8位分成高低两段:抢占优先级(分组优先级)和亚优先级(子优先级),通过设置NVIC中寄存器AIRCR的[10:8]中3位,可配置抢占优先级和亚优先级,有:
在STM32F4系列单片机中,只使用了优先级的寄存器的Bit4 ~ Bit7,Bit0 ~ Bit3没有实现,当往Bit0 ~ Bit3写入时则会忽略,读时会返回0。
对于STM32F4系列单片机,在misc.h中,有:
#define NVIC_PriorityGroup_0 ((uint32_t)0x700) /*!< 0 bits for pre-emption priority