看到一個(gè)交流群在討論關(guān)于【關(guān)于STM32中斷優(yōu)先級(jí)的話題】,其中就有小伙伴提到:為什么有些STM32中斷沒有【子優(yōu)先級(jí)】? 比如,有時(shí)候你在使用STM32CubeMX配置時(shí),你會(huì)發(fā)現(xiàn)只有Preemption Priority【搶占優(yōu)先級(jí)】,而沒有Sub Priority【次優(yōu)先級(jí)】:
這個(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)先級(jí)分組功能就不同。 Cortex-M0的NVIC沒有優(yōu)先級(jí)分組功能,Cortex-M3、 M4、M7有分組功能。
NVIC寄存器
NVIC寄存器,需查看對(duì)應(yīng)的內(nèi)核(Cortex-M)手冊(cè),在ARM官網(wǎng)能找到(M3也有對(duì)應(yīng)的中文翻譯版,大家可以自己網(wǎng)上搜索)。 內(nèi)核中的寄存器和我們STM32參考手冊(cè)中寄存器一樣,不同的Bit位代表含義不同。 但是,對(duì)于NVIC來說,由于包含眾多優(yōu)先級(jí)相關(guān)配置,寄存器數(shù)量相對(duì)較多(NVIC寄存器族)。

中斷入口
額外提下一個(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不同通道捕獲中斷等。
-
mcu
+關(guān)注
關(guān)注
146文章
17956瀏覽量
365901 -
控制器
+關(guān)注
關(guān)注
114文章
17086瀏覽量
183981 -
STM32
+關(guān)注
關(guān)注
2293文章
11031瀏覽量
364302
發(fā)布評(píng)論請(qǐng)先 登錄
ADL5308可以通過軟件和硬件配置的參數(shù),配置的優(yōu)先級(jí)是什么?
第十章 W55MH32中斷應(yīng)用概覽

CyU3PDebugPrint的最高優(yōu)先級(jí)和最低優(yōu)先級(jí)是什么?
一天一個(gè)嵌入式面試知識(shí)(1:中斷處理機(jī)制詳解)
配電柜—斷電危機(jī)?配電柜故障排查優(yōu)先級(jí)指南

c51單片機(jī)中斷
瑞薩ethercat中斷對(duì)程序中其他周期性中斷的影響
使用CH32V103C8TC設(shè)置中斷優(yōu)先級(jí)分組時(shí),編譯報(bào)錯(cuò)的原因?
CH32V103 使用中斷優(yōu)先級(jí)分組0時(shí)報(bào)錯(cuò)
STM32CUBEMX(11)--外部中斷(EXTI)
在汽車區(qū)域模塊中使用理想二極管的優(yōu)先級(jí)電源多路復(fù)用器

評(píng)論