stm32 為了適應不同的優先順序組合,設定了 group 的概念,組是乙個大的框架,在組下分別分配了佔先優先順序與副優先順序。每乙個中斷都有乙個專門的暫存器(interrupt priority registers)來描述該中斷的佔先式優先順序及副優先順序。在這個暫存器中stm32 使用4個二進位制位描述優先順序(cortex-m3 定義了8位,但 stm32只使用了4位)。--**《稀里糊塗學stm32》第三講《事出有因》
1.systick
一般nvic優先順序的設定都是通過nvic_inittypedef中的nvic_irqchannelpreemptionpriority和nvic_irqchannelsubpriority,但systick是通過cm3核心的函式nvic_setpriority()設定,這是因為systick的中斷號irqn為-1,這兩種設定方式存在如下對應關係
nvic_setpriority(systick_irqn, n);
n=0x00~0x03 設定systick為搶占優先順序0
n=0x04~0x07 設定systick為搶占優先順序1
n=0x08~0x0b 設定systick為搶占優先順序2
n=0x0c~0x0f 設定systick為搶占優先順序3
具體請參考
2.正確設定乙個中斷,包括peripheral的中斷使能,對應nvic的配置,中斷入口函式。同一peripheral的多個中斷源往往對應同乙個中斷處理函式isr,這時需要在isr根據中斷標誌位進行判斷。
STM32中斷相關
一般io口的初始化過程 下面以初始化e埠的0 1 2 3引腳為例。void mx gpio init void 在core cm4.h中定義nvic結構體 typedef struct nvic type 在配置中斷時,最常用的就是iser icer和ip這三個暫存器。iser用來使能中斷,icer...
stm32中斷優先順序 STM32中斷系統
stm32 中斷非常強大,幾乎每個外設都可以產生中斷,因此這裡我們單獨使用一章來介紹它,為後面介紹外設中斷做鋪墊。學習本章可以參考 stm32f10x中文參考手冊 9 中斷和事件章節,cortex m3 權威指南 中文 chpt08 nvic與中斷控制章節。中斷概念 在學習 51 微控制器時,我們就...
STM32中斷巢狀
cortex m3核心支援256個中斷,其中包括16個核心中斷和240個外部中斷,且具有256級的可程式設計中斷設定,而stm32只用了其中一部分。stm32有84個中斷,包括16個核心中斷和68個可遮蔽中斷,具有16級可程式設計中斷優先順序。而我所使用的103系列只有60個可遮蔽中斷。優先順序的判...