有些STM32用戶,尤其是那些用過基于ARM Cortx-M3/M4/M7內(nèi)核的STM32 MCU的用戶,在使用基于M0/M0+內(nèi)核的STM32系列并通過STM32CubeMx進行NVIC配置時,不難發(fā)現(xiàn)一個問題,那就是怎么沒有中斷子優(yōu)先級【或稱響應(yīng)優(yōu)先級、副優(yōu)先級等】的配置?!【當(dāng)然,很多時候我們或許沒有關(guān)注子優(yōu)先級】如下圖所示,只看到搶占優(yōu)先級的配置,看不到子優(yōu)先級的配置項。
上圖是我基于STM32L0系列芯片的配置,該系列芯片是基于ARM Cortex-M0+內(nèi)核的。我們再看看下圖的NVIC配置頁面,顯然可以看到搶占優(yōu)先級【Preemption Priority】和子優(yōu)先級【Sub
Priority】的配置項及相關(guān)信息。
上圖是我基于STM32G4系列芯片的NVIC配置頁面。該系列的內(nèi)核是ARM Cortex-M4。
當(dāng)我們使用STM32系列芯片并通過CubeMx圖形化工具進行NVIC配置時,相應(yīng)界面有無子優(yōu)先級的配置,取決于該系列芯片所用的ARM Cortex內(nèi)核。如果說所用STM32系列是基于ARM Cortex-M0或M0+內(nèi)核的,在進行NVIC配置時是沒有子優(yōu)先級可以配置的。
ARM Cortex-M0或M0+內(nèi)核的中斷優(yōu)先級控制寄存器實際有效位就是2位,全部用來對各個中斷/異常做搶占優(yōu)先級配置,不額外劃分子優(yōu)先級的配置。
也就是說,基于ARM Cortex-M0或M0+內(nèi)核的STM32 MCU的NVIC配置不會有子優(yōu)先級的概念和配置,對于優(yōu)先級可配置的中斷而言,總共就4個可搶占優(yōu)先級。下圖是基于ARM Cortex-M0或M0+內(nèi)核的STM32系列展示。當(dāng)然,STM32系列涉及的內(nèi)核很多,遠不止下面這些,還有M4/M7/M33等。
而ARM Cortex-M3、M4、M7內(nèi)核的中斷優(yōu)先級配置寄存器的有效位為4位,同時還可以基于該4位做優(yōu)先級的分組,進而引出搶占優(yōu)先級和子優(yōu)先級。
-
芯片
+關(guān)注
關(guān)注
452文章
50206瀏覽量
420910 -
mcu
+關(guān)注
關(guān)注
146文章
16885瀏覽量
349919 -
ARM
+關(guān)注
關(guān)注
134文章
9027瀏覽量
366481 -
STM32
+關(guān)注
關(guān)注
2264文章
10854瀏覽量
354297
發(fā)布評論請先 登錄
相關(guān)推薦
評論