看到一個(gè)交流群在討論關(guān)于【關(guān)于STM32中斷優(yōu)先級的話題】,其中就有小伙伴提到:為什么有些STM32中斷沒有【子優(yōu)先級】?
比如,有時(shí)候你在使用STM32CubeMX配置時(shí),你會(huì)發(fā)現(xiàn)只有Preemption Priority【搶占優(yōu)先級】,而沒有Sub Priority【次優(yōu)先級】:

然而,有時(shí)候你會(huì)發(fā)現(xiàn)又有Sub Priority【次優(yōu)先級】:

這個(gè)問題就牽涉到STM32,準(zhǔn)確的來說的是 Cortex-M NVIC嵌套向量中斷控制器的問題。
下面就展開來說說關(guān)于ARM單片機(jī)NVIC的內(nèi)容。
關(guān)于Cortex-M的NVIC
NVIC:Nested Vectored Interrupt Controller,嵌套向量中斷控制器。
在每個(gè)Cortex-M內(nèi)核中都有這么一個(gè)NVIC嵌套向量中斷控制器,當(dāng)MCU使用的內(nèi)核不同,其中的NVIC也可能不同。
比如,Cortex-M0和Cortex-M3內(nèi)核中NVIC功能就不同。
其中,中斷優(yōu)先級分組功能就不同。
Cortex-M0的NVIC沒有優(yōu)先級分組功能,Cortex-M3、 M4、M7有分組功能。
?
所以,你在使用STM32CubeMX配置時(shí),M0/M0+內(nèi)核的STM32是沒有【次優(yōu)先級】那個(gè)選項(xiàng)的。
Cortex-M0包含STM32F0、L0、G0等處理器。
對底層感興趣的朋友可以繼續(xù)往下看。
NVIC寄存器
NVIC寄存器,需查看對應(yīng)的內(nèi)核(Cortex-M)手冊,在ARM官網(wǎng)能找到( M3也有對應(yīng)的中文翻譯版,大家可以自己網(wǎng)上搜索)。
內(nèi)核中的寄存器和我們STM32參考手冊中寄存器一樣,不同的Bit位代表含義不同。
但是,對于NVIC來說,由于包含眾多優(yōu)先級相關(guān)配置,寄存器數(shù)量相對較多(NVIC寄存器族)。
? ?
拿M3來說,優(yōu)先級分組的配置,位于NVIC的AIRCR應(yīng)用程序中斷及復(fù)位控制寄存器中:
?
中斷入口
額外提下一個(gè)小伙伴問的問題:為什么外部中斷8和9都使用同一個(gè)中斷?
void EXTI9_5_IRQHandler(void) { if(EXTI_GetITStatus(EXTI_Line8) != RESET) { /* 代碼 */ EXTI_ClearITPendingBit(EXTI_Line8); } if(EXTI_GetITStatus(EXTI_Line9) != RESET) { /* 代碼 */ EXTI_ClearITPendingBit(EXTI_Line9); } }我想,這個(gè)問題應(yīng)該不難。好比一個(gè)main程序入口,進(jìn)入之后需要處理很多事情,只是在里面需要區(qū)分事件。
很多外設(shè)中斷,都會(huì)使用同一個(gè)中斷入口,有一個(gè)原因:節(jié)約中斷入口資源分配。
像USART發(fā)送和接收中斷,TIM不同通道捕獲中斷等。
審核編輯:劉清
-
STM32
+關(guān)注
關(guān)注
2310文章
11171瀏覽量
373764 -
Cortex-M
+關(guān)注
關(guān)注
2文章
234瀏覽量
31117 -
ARM單片機(jī)
+關(guān)注
關(guān)注
0文章
53瀏覽量
10477 -
中斷優(yōu)先級
+關(guān)注
關(guān)注
0文章
22瀏覽量
9746 -
stm32cubemx
+關(guān)注
關(guān)注
5文章
290瀏覽量
17396
原文標(biāo)題:STM32中斷沒有子優(yōu)先級?
文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
STM32 MCU通過STM32CubeMx配置NVIC怎么沒有中斷子優(yōu)先級選項(xiàng)
STM32中斷優(yōu)先級相關(guān)概念與使用筆記
如何去實(shí)現(xiàn)stm32中斷優(yōu)先級分組
STM32中斷中設(shè)置的先占式優(yōu)先級與從優(yōu)先級如何理解?
Stm32中斷優(yōu)先級概念及使用
STM32中斷優(yōu)先級的分配以及中斷原則
stm32中斷優(yōu)先級分組
STM32筆記之中斷優(yōu)先級和開關(guān)總中斷
STM32中斷沒有子優(yōu)先級?
為什么有些STM32中斷沒有子優(yōu)先級?
評論