STM32提供68个中断通道,每一个中断通道对应一个中断源,这里的中断源是指引发中断的外设(例如,I2C,UART,EXTI等等)。每一个中断源又可以包括多种中断发生情况,例如UART发送数据完毕,接收到数据等情况均可能引起UART中断源向STM32内核提出中断处理请求。
STM32的中断优先级可以分为抢占式优先级和非抢占式优先级控制两部分。
为了符合COTEX-M3标准,STM32的中断源优先级寄存器采用8位的方式存储,但是只是用了高4位,低4位保留未用。高4位又被分为了两段:抢占式优先级控制段和非抢占式优先级控制段。STM32提供了一个函数
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_x);
用于将这4位进行控制段分配划分,如下表,函数参数就是表的编号列。
对于一个特定的系统,只能在系统启动初调用该函数一次,指定优先级段分配方式。之后其他中断源配置均使用函数
NVIC_Init(&NVIC_InitStructure);--------------------------------------------优先级分组
进行中断源进行具体的优先级配置。涉及到的配置参数如下:
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;-----抢占式优