電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 65|回復(fù): 0
收起左側(cè)

MCU中斷沒(méi)有子優(yōu)先級(jí)?

[復(fù)制鏈接]

418

主題

418

帖子

4293

積分

四級(jí)會(huì)員

Rank: 4

積分
4293
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-12-9 11:45:00 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
作者 | strongerHuang
微信公眾號(hào) | strongerHuang
看到一個(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í)】:

然而,有時(shí)候你會(huì)發(fā)現(xiàn)又有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ù)位控制寄存器中:

這里推薦閱讀之前我寫過(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不同通道捕獲中斷等。
    ------------ END ------------

    ●專欄《嵌入式工具●專欄《嵌入式開(kāi)發(fā)》●專欄《Keil教程》●嵌入式專欄精選教程
    關(guān)注公眾號(hào)回復(fù)“加群”按規(guī)則加入技術(shù)交流群,回復(fù)“1024”查看更多內(nèi)容。
    點(diǎn)擊“閱讀原文”查看更多分享。
  • 發(fā)表回復(fù)

    本版積分規(guī)則


    聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表