Cortex-M3的中断优先级的分组方式
我们知道:STM32把指定中断优先级的寄存器的MSB4位有效,共有以下5种分组方式:
第0组方式:所有4位用于响应优先级
第1组方式:最高1位用于抢占式优先级,最低3位用于响应优先级
第2组方式:最高2位用于抢占式优先级,最低2位用于响应优先级
第3组方式:最高3位用于抢占式优先级,最低1位用于响应优先级
第4组方式:所有4位用于抢占式优先级
在MISC.H里面有:
#define NVIC_PriorityGroup_0 ((uint32_t)0x700) /* 0 bits for pre-emption priority
4 bits for subpriority */
#define NVIC_PriorityGroup_1 ((uint32_t)0x600) /* 1 bits for pre-emption priority
3 bits for subpriority */
#define NVIC_PriorityGroup_2 ((uint32_t)0x500) /* 2 bits for pre-emption priority
2 bits for subpriority */
#define NVIC_PriorityGroup_3 ((uint32_t)0x400) /* 3 bits for pre-emption priority
1 bits for subpriority */
#define NVIC_PriorityGroup_4 ((uint32_t)0x300) /* 4 bits for pre-emption priority
0 bits for subpriority */
我们发现:第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
Cortex-M3中断优先级分组方 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)