今天遍地都是520的消息,華為也是熱點(diǎn)。我們可以關(guān)注熱點(diǎn),自己的事還得繼續(xù)做下去。
1寫(xiě)在前面
今天在一個(gè)交流群看到有人問(wèn),為什么NVIC沒(méi)有優(yōu)先級(jí)分組配置的選項(xiàng),如下如:
這個(gè)問(wèn)題,想必沒(méi)有遇到過(guò)的人,還以為是STM32CubeMX的Bug。
其實(shí),答案很簡(jiǎn)單:有的MCU是沒(méi)有NVIC分組功能。
下面就針對(duì)這個(gè)NVIC分組功能展開(kāi)來(lái)講述。
2關(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內(nèi)核的STM32是沒(méi)有那個(gè)選項(xiàng)的。
Cortex-M0包含STM32F0、L0、G0等處理器。
對(duì)底層感興趣的朋友可以繼續(xù)往下看。
3NVIC寄存器
NVIC寄存器,需查看對(duì)應(yīng)的內(nèi)核(Cortex-M)手冊(cè),在ARM官網(wǎng)能找到。
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0432c/index.html
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ò)的一篇文章:STM32中斷,及FreeRTOS中斷優(yōu)先級(jí)配置
4中斷入口
前兩天有人問(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不同通道捕獲中斷等。
-
STM32
+關(guān)注
關(guān)注
2309文章
11162瀏覽量
373467 -
Cortex
+關(guān)注
關(guān)注
2文章
220瀏覽量
48800 -
NVIC
+關(guān)注
關(guān)注
0文章
37瀏覽量
12526
發(fā)布評(píng)論請(qǐng)先 登錄
Cortex-M0和Cortex-M0+的區(qū)別
Cortex-M0 處理器介紹
CW32F030中斷解析
CS32L010系列能否支持串口的發(fā)送和接收中斷單獨(dú)配置?不同中斷的中斷優(yōu)先級(jí)如何設(shè)置?
搶占優(yōu)先級(jí)和子優(yōu)先級(jí)
芯源MCU中斷相關(guān)寄存器
電能質(zhì)量在線監(jiān)測(cè)裝置的暫態(tài)數(shù)據(jù)補(bǔ)傳的優(yōu)先級(jí)是怎樣的?
低優(yōu)先級(jí)線程無(wú)法調(diào)度怎么解決?
什么是RTOS中的優(yōu)先級(jí)反轉(zhuǎn)
請(qǐng)問(wèn)NuMicro? Cortex-M0/M4系列可以提供哪些USB器件示例代碼?
TLe9893怎么調(diào)整外設(shè)的中斷優(yōu)先級(jí)?
請(qǐng)問(wèn)C0系列單片機(jī)中斷優(yōu)先級(jí)只有4級(jí)嗎?
第十章 W55MH32中斷應(yīng)用概覽
CyU3PDebugPrint的最高優(yōu)先級(jí)和最低優(yōu)先級(jí)是什么?
瑞芯微RK3506(3核ARM+Cortex-A7 + ARM Cortex-M0)工業(yè)核心板選型資料
關(guān)于Cortex-M0的NVIC沒(méi)有優(yōu)先級(jí)分組功能,以及衍生內(nèi)容
評(píng)論