1. 程式人生 > >[原創]NVIC中斷優先順序分組與中斷優先順序和子優先順序

[原創]NVIC中斷優先順序分組與中斷優先順序和子優先順序

Cortex-M核心提出中斷分組的概念,一共5組

NVIC_PriorityGroup_0 :0 bit 搶佔優先順序 4 bit 子優先順序
NVIC_PriorityGroup_1 :1 bit 搶佔優先順序 3 bit 子優先順序
NVIC_PriorityGroup_2 :2 bit 搶佔優先順序 2 bit 子優先順序
NVIC_PriorityGroup_3 :3 bit 搶佔優先順序 1 bit 子優先順序
NVIC_PriorityGroup_4 :4 bit 搶佔優先順序 0 bit 子優先順序

在老的MCU中,沒有分組的概念,分組是為了更好地管理中斷,可以將同一個優先順序的任務放在同一分組裡,先到先執行,同時到,按子優先順序順序執行。
NVIC_SetPriorityGrouping(NVIC_PriorityGroup_4)

意味著沒有子優先順序,只有搶佔優先順序的區別,跟老MCU基本一樣
NVIC_SetPriorityGrouping(NVIC_PriorityGroup_0)意味著沒有搶佔優先順序,只有子優先順序的區別

中斷分組設定好以後,設定中斷任務的優先順序
NVIC_SetPriority(irq,pri0)
irq 表示中斷號,由MCU決定
pri0 值域 0~15 根據前述分組,決定哪些位是 搶佔優先順序,哪些位是 子優先順序
數值越低,優先順序越高
當然,以上設定是在相應中斷配置後,且相應中斷使能的情況下才有效