0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

strongerHuang ? 來(lái)源:strongerHuang ? 2023-10-17 15:50 ? 次閱讀

看到一個(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í)】:

7d0e0e70-6cc1-11ee-939d-92fbcf53809c.png

然而,有時(shí)候你會(huì)發(fā)現(xiàn)又有Sub Priority【次優(yōu)先級(jí)】:

7d157caa-6cc1-11ee-939d-92fbcf53809c.png

這個(gè)問(wèn)題就牽涉到STM32,準(zhǔn)確的來(lái)說(shuō)的是 Cortex-M NVIC嵌套向量中斷控制器的問(wèn)題。

下面就展開來(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有分組功能。7d1d290a-6cc1-11ee-939d-92fbcf53809c.jpg ?所以,你在使用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寄存器族。7d2acdc6-6cc1-11ee-939d-92fbcf53809c.jpg ? ?拿M3來(lái)說(shuō),優(yōu)先級(jí)分組的配置,位于NVIC的AIRCR應(yīng)用程序中斷及復(fù)位控制寄存器中:7d32380e-6cc1-11ee-939d-92fbcf53809c.jpg ?這里推薦閱讀之前我寫過(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)容及配圖由入駐作者撰寫或者入駐合作網(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
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16885

    瀏覽量

    349916
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16103

    瀏覽量

    177069
  • STM32
    +關(guān)注

    關(guān)注

    2264

    文章

    10854

    瀏覽量

    354291
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    freertos中斷優(yōu)先級(jí)在哪設(shè)置

    FreeRTOS是一個(gè)流行的實(shí)時(shí)操作系統(tǒng),它廣泛應(yīng)用于嵌入式系統(tǒng)開發(fā)。在FreeRTOS,中斷優(yōu)先級(jí)是一個(gè)重要的概念,因?yàn)樗鼪Q定了中斷處理的順序和響應(yīng)時(shí)間。 1. 理解
    的頭像 發(fā)表于 09-02 14:17 ?505次閱讀

    ESP32S2如何設(shè)置中斷優(yōu)先級(jí)?

    ESP32S2有六級(jí)中斷, 如何設(shè)置中斷優(yōu)先級(jí)? 比如在GPIO例程里 ,這種中斷優(yōu)先級(jí)是如何設(shè)
    發(fā)表于 06-21 07:59

    請(qǐng)問(wèn)有什么方法降低WIFI中斷優(yōu)先級(jí)?

    因?yàn)轫?xiàng)目對(duì)時(shí)序輸出要求比較嚴(yán)格,WIFI中斷優(yōu)先級(jí)比硬件定時(shí)器中斷優(yōu)先級(jí)要高,在定時(shí)器中斷里面對(duì)GPIO管腳控制被延長(zhǎng)執(zhí)行,請(qǐng)問(wèn)有什么方法降
    發(fā)表于 06-19 07:37

    systick的中斷優(yōu)先級(jí)是否應(yīng)該設(shè)置為最高優(yōu)先級(jí)的嵌套中斷?

    最近在學(xué)習(xí)ucosii有這樣一個(gè)疑問(wèn),關(guān)于stm32的systick作為ucosii的基準(zhǔn)時(shí)鐘,systick的中斷優(yōu)先級(jí)是否應(yīng)該設(shè)置為最高優(yōu)先級(jí)的嵌套
    發(fā)表于 05-16 06:44

    stm32中斷優(yōu)先級(jí)分組了之后還能改分組嗎?

    如標(biāo)題所示,stm32中斷優(yōu)先級(jí)分組了之后還能改分組嗎? 比如我要使用外部中斷EXIT2,3,我在配置的時(shí)候配置了優(yōu)先級(jí)分組2組,然后配
    發(fā)表于 05-13 08:40

    請(qǐng)問(wèn)stm32f030R8的中斷優(yōu)先級(jí)分組如何設(shè)置?

    官方的庫(kù)函數(shù)沒(méi)有中斷優(yōu)先級(jí)分組的函數(shù) 查閱了M0的手冊(cè)也沒(méi)有找到SCB->AIRCR寄存器詳細(xì)的說(shuō)明
    發(fā)表于 05-13 07:43

    STM8中斷優(yōu)先級(jí)不夠怎么解決?

    STM8L ,中斷優(yōu)先級(jí)通過(guò)下面函數(shù)設(shè)置,但此處僅 ITC_PriorityLevel_1,ITC_PriorityLevel_2,ITC_PriorityLevel_3總共才3個(gè)中斷
    發(fā)表于 05-06 06:54

    求助,關(guān)于stm32F4中斷優(yōu)先級(jí)0無(wú)法搶占的問(wèn)題求解

    搶占優(yōu)先級(jí)具有最高優(yōu)先級(jí)別。 現(xiàn)在我使用兩個(gè)定時(shí)器: 1)TIM2設(shè)置優(yōu)先級(jí)為0,TIM4設(shè)置優(yōu)先級(jí)為1 2)若先啟動(dòng)TIM4,延時(shí)一下再啟動(dòng)TIM2(為了先觸發(fā)定時(shí)器4
    發(fā)表于 04-23 07:26

    如何測(cè)試STM32中斷搶占,為何優(yōu)先級(jí)高的定時(shí)器2居然一次都搶不到中斷了呢?

    個(gè)位大佬你們是如何測(cè)試STM32中斷搶占的,我的測(cè)試步驟如下:第一步、我配置了兩個(gè)定時(shí)器,定時(shí)器2優(yōu)先級(jí)為3,定時(shí)器3優(yōu)先級(jí)為4, 第二步、我各自測(cè)試都可以發(fā)生
    發(fā)表于 04-22 06:31

    stm32f401和max31855通過(guò)spi通訊,沒(méi)有將spi的相關(guān)中斷優(yōu)先級(jí)置于最高級(jí)就會(huì)死機(jī)的原因?

    stm32f401和熱電偶芯片max31855通過(guò)spi通訊,如果沒(méi)有將spi的相關(guān)中斷優(yōu)先級(jí)置于最高優(yōu)先級(jí),程序運(yùn)行幾秒后就會(huì)死機(jī),將sp
    發(fā)表于 03-28 09:14

    STM32F103的寄存器NVIC_IPRx搶占優(yōu)先級(jí)優(yōu)先級(jí)是怎么設(shè)置的?

    STM32F103的寄存器NVIC_IPRx有些不明白,搶占優(yōu)先級(jí)優(yōu)先級(jí)是怎么設(shè)置的? 如果,中斷分組2,搶占
    發(fā)表于 03-27 07:48

    Hightec對(duì)芯片中斷優(yōu)先級(jí)分配時(shí),中斷號(hào)越高中斷優(yōu)先級(jí)越高嗎?

    請(qǐng)問(wèn)大佬,Hightec對(duì)芯片中斷優(yōu)先級(jí)分配時(shí),中斷號(hào)越高中斷優(yōu)先級(jí)越高嗎?看網(wǎng)上的帖子說(shuō)中斷號(hào)
    發(fā)表于 02-27 06:13

    M0516中斷優(yōu)先級(jí)怎么設(shè)置?

    新唐M0516中斷優(yōu)先級(jí)的設(shè)置,有沒(méi)有示例,沒(méi)找到相關(guān)接口,謝謝!
    發(fā)表于 01-16 07:25

    GD32如何配置中斷優(yōu)先級(jí)分組以及中斷優(yōu)先級(jí)

    使用GD32 MCU的過(guò)程,大家可能會(huì)有以下疑問(wèn):中斷優(yōu)先級(jí)如何配置和使用?
    的頭像 發(fā)表于 01-10 10:30 ?2870次閱讀
    GD32如何配置<b class='flag-5'>中斷</b><b class='flag-5'>優(yōu)先級(jí)</b>分組以及<b class='flag-5'>中斷</b><b class='flag-5'>優(yōu)先級(jí)</b>

    python運(yùn)算符的優(yōu)先級(jí)大小

    Python運(yùn)算符的優(yōu)先級(jí)決定了表達(dá)式各個(gè)運(yùn)算符的計(jì)算順序。了解運(yùn)算符的優(yōu)先級(jí)對(duì)于正確理解和編寫復(fù)雜的表達(dá)式非常重要。本文將詳細(xì)介紹Python
    的頭像 發(fā)表于 11-29 16:21 ?3074次閱讀