看到一個交流群在討論關(guān)于【關(guān)于STM32中斷優(yōu)先級的話題】,其中就有小伙伴提到:為什么有些STM32中斷沒有【子優(yōu)先級】? 比如,有時候你在使用STM32CubeMX配置時,你會發(fā)現(xiàn)只有Preemption Priority【搶占優(yōu)先級】,而沒有Sub Priority【次優(yōu)先級】:
這個問題就牽涉到STM32,準確的來說的是 Cortex-M NVIC嵌套向量中斷控制器的問題。
下面就展開來說說關(guān)于ARM單片機NVIC的內(nèi)容。
關(guān)于Cortex-M的NVIC
NVIC:Nested Vectored Interrupt Controller,嵌套向量中斷控制器。 在每個Cortex-M內(nèi)核中都有這么一個NVIC嵌套向量中斷控制器,當MCU使用的內(nèi)核不同,其中的NVIC也可能不同。 比如,Cortex-M0和Cortex-M3內(nèi)核中NVIC功能就不同。 其中,中斷優(yōu)先級分組功能就不同。 Cortex-M0的NVIC沒有優(yōu)先級分組功能,Cortex-M3、 M4、M7有分組功能。
NVIC寄存器
NVIC寄存器,需查看對應的內(nèi)核(Cortex-M)手冊,在ARM官網(wǎng)能找到(M3也有對應的中文翻譯版,大家可以自己網(wǎng)上搜索)。 內(nèi)核中的寄存器和我們STM32參考手冊中寄存器一樣,不同的Bit位代表含義不同。 但是,對于NVIC來說,由于包含眾多優(yōu)先級相關(guān)配置,寄存器數(shù)量相對較多(NVIC寄存器族)。

中斷入口
額外提下一個小伙伴問的問題:為什么外部中斷8和9都使用同一個中斷?
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);
}
}
我想,這個問題應該不難。好比一個main程序入口,進入之后需要處理很多事情,只是在里面需要區(qū)分事件。
很多外設中斷,都會使用同一個中斷入口,有一個原因:節(jié)約中斷入口資源分配。
像USART發(fā)送和接收中斷,TIM不同通道捕獲中斷等。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
mcu
+關(guān)注
關(guān)注
146文章
17984瀏覽量
367077 -
控制器
+關(guān)注
關(guān)注
114文章
17113瀏覽量
184342 -
STM32
+關(guān)注
關(guān)注
2293文章
11032瀏覽量
365034
發(fā)布評論請先 登錄
相關(guān)推薦
熱點推薦
ADL5308可以通過軟件和硬件配置的參數(shù),配置的優(yōu)先級是什么?
你好,麻煩問一下ADL5308可以通過軟件和硬件配置的參數(shù),配置的優(yōu)先級是什么?有沒有更詳細的寄存器配置手冊,截距配置的步進是多少?
發(fā)表于 06-10 06:39
第十章 W55MH32中斷應用概覽
本章講述了W55MH32中斷應用,涵蓋異常類型、NVIC介紹、優(yōu)先級定義與分組,闡述中斷編程三要點(使能中斷、配置 NVIC、編寫服務函數(shù)),并強調(diào)

CyU3PDebugPrint的最高優(yōu)先級和最低優(yōu)先級是什么?
[i]CyU3PDebugPrint的最高優(yōu)先級和最低優(yōu)先級是什么?
發(fā)表于 05-13 08:22
一天一個嵌入式面試知識(1:中斷處理機制詳解)
立即響應(優(yōu)先級高)
需經(jīng)過系統(tǒng)調(diào)度(優(yōu)先級可控)
典型應用
外部事件響應(如UART數(shù)據(jù)到達)
系統(tǒng)服務調(diào)用(如文件讀寫)
三、中斷處理流程解析
以STM32為例,
發(fā)表于 03-21 10:18
c51單片機中斷
優(yōu)先級的中斷正在處理,CPU 會暫停當前正在執(zhí)行的指令,將程序計數(shù)器(PC)等關(guān)鍵寄存器的值保存到堆棧中,然后根據(jù)中斷源找到對應的中斷向量地
發(fā)表于 11-25 21:43
瑞薩ethercat中斷對程序中其他周期性中斷的影響
瑞薩ethercat數(shù)據(jù)收發(fā)中斷對程序中其他周期計時中斷的影響要如何解決,周期中斷里通過配置GPT進行pwm的輸出,對時間要求嚴格,ethercat的通信數(shù)據(jù)收發(fā)
發(fā)表于 11-21 18:34
使用CH32V103C8TC設置中斷優(yōu)先級分組時,編譯報錯的原因?
使用CH32V103C8TC設置中斷優(yōu)先級分組時,設置為NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);編譯報錯
而使用NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
卻不會報
發(fā)表于 09-27 06:03
CH32V103 使用中斷優(yōu)先級分組0時報錯
使用CH32V103C8TC設置中斷優(yōu)先級分組時,設置為NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);而使用NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);卻不會報錯
發(fā)表于 09-23 13:52
STM32CUBEMX(11)--外部中斷(EXTI)
的優(yōu)先權(quán),數(shù)值越低優(yōu)先級越高。
同理,如果搶占優(yōu)先級相同,那么就會比較子優(yōu)先級,子
發(fā)表于 09-10 15:44
車載以太網(wǎng)交換機入門基本功(4)—優(yōu)先級設計與VLAN測試
VLAN通過報文Tag、交換機端口屬性、交換機端口過濾功能得以實現(xiàn),并通過優(yōu)先級和隊列實現(xiàn)轉(zhuǎn)發(fā)的有效調(diào)度。為了驗證交換機芯片的功能實現(xiàn),需要參考OPEN聯(lián)盟的TC11交換機芯片測試規(guī)范,包括通用測試、地址解析、VLAN等9個方面,此外,實時更進規(guī)范修改方案并與讀者分享。

在汽車區(qū)域模塊中使用理想二極管的優(yōu)先級電源多路復用器
電子發(fā)燒友網(wǎng)站提供《在汽車區(qū)域模塊中使用理想二極管的優(yōu)先級電源多路復用器.pdf》資料免費下載
發(fā)表于 09-05 11:08
?0次下載

freertos中斷優(yōu)先級在哪設置
FreeRTOS是一個流行的實時操作系統(tǒng),它廣泛應用于嵌入式系統(tǒng)開發(fā)。在FreeRTOS中,中斷優(yōu)先級是一個重要的概念,因為它決定了中斷處理的順序和響應時間。 1. 理解
stm32怎樣觸發(fā)軟件中斷
STM32中,您需要配置NVIC以啟用所需的中斷。這包括設置中斷通道、優(yōu)先級和觸發(fā)條件。 編寫中斷
【「ARM MCU嵌入式開發(fā) | 基于國產(chǎn)GD32F10x芯片」閱讀體驗】+閱讀中斷篇
優(yōu)先級的中斷程序正在執(zhí)行時發(fā)生了一個高搶占式優(yōu)先級的中斷,則第1個中斷要暫停,以此來響應這個新的中斷
發(fā)表于 09-01 23:59
評論