(一)中斷優先順序概念
stm32(cortex-m3)
中有兩個優先順序的概念——搶占式優先順序和響應優先順序,有人把響應優先順序稱作
'亞優先順序'或
'副優先順序
',每個中斷源都需要被指定這兩種優先順序。
(二)中斷響應次序
(1)具有高搶占式優先順序的中斷可以在具有低搶占式優先順序的中斷處理過程中被響應,即中斷巢狀,或者說高搶占式優先順序的中斷可以巢狀低搶占式優先順序的中斷。
(2)當兩個中斷源的搶占式優先順序相同時,這兩個中斷將沒有巢狀關係,當乙個中斷到來後,如果正在處理另乙個中斷,這個後到來的中斷就要等到前乙個中斷處理完之後才能被處理。
(3)如果這兩個中斷同時到達,則中斷控制器根據他們的響應優先順序高低來決定先處理哪乙個;如果他們的搶占式優先順序和響應優先順序都相等,則根據他們在中斷表中的排位順序決定先處理哪乙個。
(三)分組及詳細內容
cortex-m3
允許具有較少中斷源時使用較少的暫存器位指定中斷源的優先順序,因此
stm32
把指定中斷優先順序的暫存器位減少到
4位,這
4個暫存器位的分組方式如下: 第
0組:所有
4位用於指定響應優先順序 (有16個搶占式優先順序,16響應優先順序)第
1組:最高
1位用於指定搶占式優先順序,最低
3位用於指定響應優先順序 (有2個
搶占式優先順序,8響應優先順序)
第2組:最高
2位用於指定搶占式優先順序,最低
2位用於指定響應優先順序 (有4個
搶占式優先順序,4響應優先順序)
第3組:最高
3位用於指定搶占式優先順序,最低
1位用於指定響應優先順序 (有8個
搶占式優先順序,2響應優先順序)
第4組:所有
4位用於指定搶占式優先順序
nvic_prioritygroupconfig(nvic_prioritygroup_1); //選組
n vic_initstructure.nvic_irqchannelpreemptionpriority = 0; //
指定搶占式優先級別
nvic_initstructure.nvic_irqchannelsubpriority = 1; //
指定響應優先級別1
(四) 例子 //
選擇使用優先順序分組第1組
nvic_prioritygroupconfig(nvic_prioritygroup_1); //
使能exti0
中斷nvic_initstructure.nvic_irqchannel = exti0_irqchannel;
nvic_initstructure.nvic_irqchannelpreemptionpriority = 1; //
指定搶占式優先級別1
nvic_initstructure.nvic_irqchannelsubpriority = 0; //
指定響應優先級別0
nvic_initstructure.nvic_irqchannelcmd = enable;
nvic_init(&nvic_initstructure); //
使能exti9_5
中斷nvic_initstructure.nvic_irqchannel = exti9_5_irqchannel;
nvic_initstructure.nvic_irqchannelpreemptionpriority = 0; //
指定搶占式優先級別0
nvic_initstructure.nvic_irqchannelsubpriority = 1; //
指定響應優先級別1
nvic_initstructure.nvic_irqchannelcmd = enable;
nvic_init(&nvic_initstructure);
stm32中斷優先順序
cm3 核心支援 256 個中斷,stm32 並沒有使用 cm3 核心的全部只用了它的一部分。stm32 有 84 個中斷,包括 16 個核心中斷和 68 個可遮蔽中斷,stm32f103 系列上面只有 60 個 107 系列才有 68 個 下面針對stm32f103 系列說明。與 nvic 相關的...
stm32中斷優先順序 STM32中斷系統
stm32 中斷非常強大,幾乎每個外設都可以產生中斷,因此這裡我們單獨使用一章來介紹它,為後面介紹外設中斷做鋪墊。學習本章可以參考 stm32f10x中文參考手冊 9 中斷和事件章節,cortex m3 權威指南 中文 chpt08 nvic與中斷控制章節。中斷概念 在學習 51 微控制器時,我們就...
STM32 中斷 優先順序設定
stm32中斷 優先順序設定 記性老差,前邊熟悉的東西,轉眼又忘了。今又翻開以前的筆記,重溫記錄如下 參考 記不清楚了 一 中斷優先順序概念 stm32 cortex m3 中有兩個優先順序的概念 搶占式優先順序和響應優先順序,有人把響應優先順序稱作 亞優先順序 或 副優先順序 每個中斷源都需要被指...