stm32F10xxx一共有43个通道提供给可置位中断源,可以通过AIRC寄存器分配优先级。
IRQChannelPreemptionPriority:抢占优先级
NVIC_IRQChannelSubPriority:响应优先级
优先程度:抢占式优先级>响应优先级>中断表中的排位顺序
注:高抢占式优先级的中断可以打断低抢占式优先级的中断。但抢占式优先级相同时,后来的中断只能在前一个中断处理完成后才被处理,不能打断。
//-------------------------------PreemptionPriority Group ------------------------------------------------
#define NVIC_PriorityGroup_0 ((u32)0x700) //0 bitsfor pre-emption priority 4 bits for subpriority
#define NVIC_PriorityGroup_1 ((u32)0x600) //1 bitsfor pre-emption priority 3 bits for subpriority
#define NVIC_PriorityGroup_2 ((u32)0x500) //2 bitsfor pre-emption priority 2 bits for subpriority
#define NVIC_PriorityGroup_3 ((u32)0x400) // 3bits for pre-emption priority 1 bits for subpriority
#define NVIC_PriorityGroup_4 ((u32)0x300) //4 bitsfor pre-emption priority 0 bits for subpriority
1)NVIC_PriorityGroup_0:代表 4BIT位都是响应优先级,共16个,无抢占优先级,所有中断不能被打断,同时来临时最高相应优先级先处理。
NVIC_IRQChannelPreemptionPriority:无效
NVIC_IRQChannelSubPriority:0~15
2)NVIC_PriorityGroup_1:代表有两位抢占优先级,8个响应优先级,抢占优先级能够打断响应优先级。
NVIC_IRQChannelPreemptionPriority:0或1
NVIC_IRQChannelSubPriority:0~7
3)NVIC_PriorityGroup_2:代表有4个抢占优先级,4个响应优先级。
NVIC_IRQChannelPreemptionPriority:0~3
NVIC_IRQChannelSubPriority:0~3
4)NVIC_PriorityGroup_3:代表有8个抢占优先级和2个响应优先级。
NVIC_IRQChannelPreemptionPriority:0~7
NVIC_IRQChannelSubPriority:0或1
5)NVIC_PriorityGroup_4:有16个抢占优先级,无响应优先级,高抢占优先级可以打断低抢占优先级。
NVIC_IRQChannelPreemptionPriority:0~15
NVIC_IRQChannelSubPriority:无效