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


這個(gè)問(wèn)題就牽涉到STM32,準(zhǔn)確的來(lái)說(shuō)的是 Cortex-M NVIC嵌套向量中斷控制器的問(wèn)題。
下面就展開(kāi)來(lái)說(shuō)說(shuō)關(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沒(méi)有優(yōu)先級(jí)分組功能,Cortex-M3、 M4、M7有分組功能。
?所以,你在使用STM32CubeMX配置時(shí),M0/M0+內(nèi)核的STM32是沒(méi)有【次優(yōu)先級(jí)】那個(gè)選項(xiàng)的。
Cortex-M0包含STM32F0、L0、G0等處理器。
對(duì)底層感興趣的朋友可以繼續(xù)往下看。
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來(lái)說(shuō),由于包含眾多優(yōu)先級(jí)相關(guān)配置,寄存器數(shù)量相對(duì)較多(NVIC寄存器族)。
?
?拿M3來(lái)說(shuō),優(yōu)先級(jí)分組的配置,位于NVIC的AIRCR應(yīng)用程序中斷及復(fù)位控制寄存器中:
?這里推薦閱讀之前我寫(xiě)過(guò)的一篇文章:Cortex-M中斷在RTOS中的應(yīng)用及注意事項(xiàng)
中斷入口
額外提下一個(gè)小伙伴問(wèn)的問(wèn)題:為什么外部中斷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è)問(wèn)題應(yīng)該不難。好比一個(gè)main程序入口,進(jìn)入之后需要處理很多事情,只是在里面需要區(qū)分事件。
很多外設(shè)中斷,都會(huì)使用同一個(gè)中斷入口,有一個(gè)原因:節(jié)約中斷入口資源分配。
像USART發(fā)送和接收中斷,TIM不同通道捕獲中斷等。
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
mcu
+關(guān)注
關(guān)注
147文章
18938瀏覽量
398636 -
控制器
+關(guān)注
關(guān)注
114文章
17799瀏覽量
193426 -
STM32
+關(guān)注
關(guān)注
2310文章
11162瀏覽量
373542
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
熱點(diǎn)推薦
CW32F030中斷解析
可編程的優(yōu)先級(jí)
?低延時(shí)的異常和中斷處理
?支持中斷嵌套
?中斷向量表重映射
3 中斷優(yōu)先級(jí)
外
發(fā)表于 01-12 08:41
CS32L010系列能否支持串口的發(fā)送和接收中斷單獨(dú)配置?不同中斷的中斷優(yōu)先級(jí)如何設(shè)置?
1、串口能否配置成阻塞式發(fā)送和中斷式接收。
2、不同中斷的中斷優(yōu)先級(jí)如何設(shè)置?我在開(kāi)啟中斷函數(shù)代碼中看到說(shuō)
發(fā)表于 12-10 18:46
搶占優(yōu)先級(jí)和子優(yōu)先級(jí)
關(guān)于搶占優(yōu)先級(jí)和子優(yōu)先級(jí):
1)具有高搶占式優(yōu)先級(jí)的中斷可以在具有低搶占式優(yōu)先級(jí)的
發(fā)表于 12-03 07:11
電能質(zhì)量在線監(jiān)測(cè)裝置的暫態(tài)數(shù)據(jù)補(bǔ)傳的優(yōu)先級(jí)如何在實(shí)際應(yīng)用中進(jìn)行動(dòng)態(tài)調(diào)整?
電能質(zhì)量在線監(jiān)測(cè)裝置的暫態(tài)數(shù)據(jù)補(bǔ)傳優(yōu)先級(jí)在實(shí)際應(yīng)用中通過(guò) 事件驅(qū)動(dòng)、主站指令、資源狀態(tài)感知和動(dòng)態(tài)策略調(diào)整 等多層機(jī)制實(shí)現(xiàn)靈活調(diào)控,確保關(guān)鍵數(shù)據(jù)的實(shí)時(shí)性與可靠性。以下是具體實(shí)現(xiàn)方式和典型場(chǎng)景的動(dòng)態(tài)調(diào)整
電能質(zhì)量在線監(jiān)測(cè)裝置的暫態(tài)數(shù)據(jù)補(bǔ)傳的優(yōu)先級(jí)是怎樣的?
電能質(zhì)量在線監(jiān)測(cè)裝置的暫態(tài)數(shù)據(jù)補(bǔ)傳優(yōu)先級(jí)設(shè)計(jì)遵循 事件驅(qū)動(dòng)、主站指令優(yōu)先、資源動(dòng)態(tài)分配 的原則,結(jié)合行業(yè)標(biāo)準(zhǔn)和設(shè)備機(jī)制,形成以下多層級(jí)優(yōu)先級(jí)體系: 一、最高優(yōu)先級(jí):緊急事件驅(qū)動(dòng)補(bǔ)傳 1
FreeRTOS任務(wù)調(diào)度及優(yōu)先級(jí)問(wèn)題
都有容錯(cuò),但是心里沒(méi)底,想向大家了解一下實(shí)際工作中有沒(méi)有遇到到類(lèi)似的問(wèn)題,如果有又是怎么解決的呢?
另外有前輩可以分享一下任務(wù)的優(yōu)先級(jí)在實(shí)際項(xiàng)目中該基于什么原則來(lái)劃分呢?
發(fā)表于 11-06 02:18
低優(yōu)先級(jí)線程無(wú)法調(diào)度怎么解決?
1,設(shè)置了3,5,6,8幾個(gè)優(yōu)先級(jí),設(shè)備在現(xiàn)場(chǎng)正常運(yùn)行了一年多后,顯示、前端、后端這3個(gè)低優(yōu)先級(jí)線程異常了,表現(xiàn)為屏幕不動(dòng),前端采集數(shù)據(jù)沒(méi)有變化等,其他高優(yōu)先級(jí)的線程如通訊,按鍵都能正
發(fā)表于 09-25 07:33
什么是RTOS中的優(yōu)先級(jí)反轉(zhuǎn)
當(dāng)一個(gè)高優(yōu)先級(jí)任務(wù)正在等待一個(gè)資源,但一個(gè)低優(yōu)先級(jí)任務(wù)正在持有它,一個(gè)中等優(yōu)先級(jí)任務(wù)繼續(xù)在中間運(yùn)行時(shí),就會(huì)發(fā)生優(yōu)先級(jí)反轉(zhuǎn)——阻止低優(yōu)先級(jí)任務(wù)
求助,關(guān)于MS51設(shè)置中斷優(yōu)先級(jí)問(wèn)題求解
我確實(shí)發(fā)現(xiàn)在庫(kù)代碼和 TRM 之間設(shè)置中斷優(yōu)先級(jí)有一些差異,如下圖所示。
Could you check what's wrong with me?
發(fā)表于 08-25 07:01
請(qǐng)問(wèn)STM32的內(nèi)部Flash操作是不是優(yōu)先級(jí)最高?
STM32的內(nèi)部Flash操作是不是優(yōu)先級(jí)最高?目前在內(nèi)部Flash的單獨(dú)一頁(yè)存儲(chǔ)了數(shù)據(jù),發(fā)現(xiàn)在進(jìn)行頁(yè)擦除的時(shí)候正常工作的定時(shí)器中斷無(wú)法進(jìn)入了
發(fā)表于 08-13 07:03
STM32G474進(jìn)入Fault3中斷沒(méi)辦法設(shè)置成周期性觸發(fā)嗎?
手動(dòng)操作硬件觸發(fā)了Fault3故障,進(jìn)入了Fault3中斷,此時(shí)若故障一直存在程序就在中斷里無(wú)法出來(lái),F(xiàn)reeRTOS停止運(yùn)行,把故障解除后FreeRTOS正常運(yùn)行,即使把Fault3中斷優(yōu)先
發(fā)表于 08-01 07:23
TLe9893怎么調(diào)整外設(shè)的中斷優(yōu)先級(jí)?
你好林工,我該怎么調(diào)整外設(shè)的中斷優(yōu)先級(jí)?是否可以通過(guò)工具調(diào)整?默認(rèn)設(shè)置下,是不是Brdv的在中斷優(yōu)先級(jí)高于T20和can?
發(fā)表于 08-01 06:20
請(qǐng)問(wèn)C0系列單片機(jī)中斷優(yōu)先級(jí)只有4級(jí)嗎?
C0系列單片機(jī)中斷優(yōu)先級(jí)只有4級(jí)?C071在配置的時(shí)候只能配置0-3
發(fā)表于 07-23 08:00
第十章 W55MH32中斷應(yīng)用概覽
本章講述了W55MH32中斷應(yīng)用,涵蓋異常類(lèi)型、NVIC介紹、優(yōu)先級(jí)定義與分組,闡述中斷編程三要點(diǎn)(使能中斷、配置 NVIC、編寫(xiě)服務(wù)函數(shù)),并強(qiáng)調(diào)
CyU3PDebugPrint的最高優(yōu)先級(jí)和最低優(yōu)先級(jí)是什么?
[i]CyU3PDebugPrint的最高優(yōu)先級(jí)和最低優(yōu)先級(jí)是什么?
發(fā)表于 05-13 08:22
STM32中斷沒(méi)有子優(yōu)先級(jí)?
評(píng)論