Cortex-M3的中止优先级的分组方法最多能够有有8种,由于CM3强制规则:SubPriority至少要占一个位(假如没有该强制规则,那么CM3分组方法最多有9种)。
咱们知道:STM32把指定中止优先级的寄存器的MSB4位有用,共有以下5种分组方法:
第0组方法:一切4位用于呼应优先级
第1组方法:最高1位用于抢占式优先级,最低3位用于呼应优先级
第2组方法:最高2位用于抢占式优先级,最低2位用于呼应优先级
第3组方法:最高3位用于抢占式优先级,最低1位用于呼应优先级
第4组方法:一切4位用于抢占式优先级
在MISC.H里边有:
#define NVIC_PriorityGroup_0
#define NVIC_PriorityGroup_1
#define NVIC_PriorityGroup_2
#define NVIC_PriorityGroup_3
#define NVIC_PriorityGroup_4
咱们发现:第4组方法是“一切4位用于抢占式优先级”,那么这是不是与”SubPriority至少要占一个位”相抵触呢?
答案:当然不抵触了!由于尽管STM32的”优先级装备寄存器”没有运用bit3、bit2、bit1、bit0,可是却答应从它们中分组(分组方位由应用程序中止及复位操控寄存器(AIRCR)的[10:8]决议)。
=========================
第0组选用的分组方法是
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
第1组选用的分组方法是
bit7bit6 bit5 bit4 bit3 bit2 bit1 bit0
第2组选用的分组方法是
bit7 bit6bit5 bit4 bit3 bit2 bit1 bit0
第3组选用的分组方法是
bit7 bit6 bit5bit4 bit3 bit2 bit1 bit0
第4组选用的分组方法是
bit7 bit6 bit5 bit4bit3 bit2 bit1 bit0