中斷優先順序

2021-07-29 06:40:35 字數 1230 閱讀 9348

中斷優先順序有兩種,一種是搶占優先順序,一種是固有優先順序,先介紹搶占優先順序。

中斷搶占優先順序:

ip 這個暫存器的每一位,表示對應中斷的搶占優先順序,每一位的復位值都是 0,當我們

把某一位設定為 1 的時候,這一位的優先順序就比其它位的優先順序高了。比如我們設定了 pt0

位為 1 後,當微控制器在主迴圈或者任何其它中斷程式中執行時,一旦定時器 t0 發生中斷,

作為更高的優先順序,程式馬上就會跑到 t0 的中斷程式中來執行。 反過來,當微控制器正在 t0

中斷程式中執行時, 如果有其它中斷發生了,還是會繼續執行 t0 中斷程式,直到把 t0 中的中斷程式執行完畢以後, 才會去執行其它中斷程式。

當進入低優先順序中斷中執行時, 如又發生了高優先順序的中斷, 則立刻進入高優先順序中斷

執行,處理完高優先順序級中斷後, 再返回處理低優先順序中斷, 這個過程就叫做中斷巢狀,也

稱為搶占。 所以搶占優先順序的概念就是, 優先順序高的中斷可以打斷優先順序低的中斷的執行,

從而形成巢狀。 當然反過來,優先順序低的中斷是不能打斷優先順序高的中斷的。

固有優先順序:

那麼既然有搶占優先順序,自然就也有非搶占優先順序了,也稱為固有優先順序。在表1.3 中的最後一列給出的就是固有優先順序,請注意,在中斷優先順序的編號中,一般都是數字越小優先順序越高。 從表中可以看到一共有 1~6 共 6 級的優先順序,這裡的優先順序與搶占優先順序的乙個不同點就是,它不具有搶占的特性,也就是說即使在低優先順序中斷執行過程中又發生了高優先順序的中斷,那麼這個高優先順序的中斷也只能等到低優先順序中斷執行完後才能得到響應。

既然不能搶占,那麼這個優先順序有什麼用呢?

答案是多個中斷同時存在時的仲裁。比如說有多個中斷同時發生了,當然實際上發生這種情況的概率很低,但另外一種情況就常見的多了,那就是出於某種原因我們暫時關閉了總中斷,即 ea=0,執行完一段**後又重新使能了總中斷,即 ea=1,那麼在這段時間裡就很可能有多個中斷都發生了,但因為總中斷是關閉的,所以它們當時都得不到響應,而當總中斷再次使能後,它們就會在同時請求響應了,很明顯,這時也必需有個先後順序才行,這就是非搶占優先順序的作用了——如表1.3中,誰優先順序最高先響應誰,然後按編號排隊,依次得到響應.

摘自宋雪松老師《手把手教你學微控制器--c語言版》,作為筆記之用。

中斷優先順序

優先順序 讓我頭疼好久啊 轉一篇文章,這裡還有不明白的望高手指教!被我用紅色注釋的部分的值怎樣選擇?一 中斷優先順序概念 stm32 cortex m3 中有兩個優先順序的概念 搶占式優先順序和響應優先順序,有人把響應優先順序稱作 亞優先順序 或 副優先順序 每個中斷源都需要被指定這兩種優先順序。二...

NVIC中斷優先順序管理

1.stm32的中斷分組 每個中斷設定乙個搶占優先順序和乙個響應優先順序值,分組配置是在暫存器scb aircr中配置。注意 一般情況下,系統 執行過程中,只設定一次中斷優先順序分組 數值越小所代表的優先順序就越高。1 高優先順序的搶占優先順序可以打斷正在進行的低搶占優先順序中斷的。2 搶占優先順序...

NVIC中斷優先順序管理

1 參考資料 stm32f1開發指南 庫函式版本 4.5 小節 中斷優先順序分組管理 stm32中文參考手冊v10 第9章 中斷和事件 2 nvic中斷優先順序分組 cm3核心支援256個中斷,其中包含了16個核心中斷和240個外部中斷,並且具有256級的可程式設計中斷設定。stm32並沒有使用cm...