1. 程式人生 > >STM32關於優先順序設定的理解 NVIC_SetPriority()

STM32關於優先順序設定的理解 NVIC_SetPriority()

Systick模組初始化配置函式(Systick_config)中設定模組中斷優先順序的函式為:
NVIC_SetPriority((SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);

引數SysTick_IRQn為systick基址,這個沒什麼好說的

關鍵在引數 (1<<__NVIC_PRIO_BITS) - 1);這個引數即佔先優先順序值,其中—NVIC_PRIO_BITS是stm32.h中的巨集定義,庫函式預設為4,表示用4位表示佔先優先順序,因為m3核心只有4位用來表示佔先優先順序和響應優先順序,那麼響應優先順序就剩下0位了,也就是沒有響應優先順序之分,
按照上式計算若NVIC_PRIO_BITS為4則佔先優先順序為15,即最低優先順序值
依次可類推,即 (1<<__NVIC_PRIO_BITS) - 1
);表示的是可用的最低優先順序(1<<4為16,—1為15),將後面那個紅色的1改為其他值即可改變此模組佔先優先順序