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

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

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

不會RTOS,是因為你沒搞懂NVIC

朱老師物聯(lián)網(wǎng)大講堂 ? 2024-03-31 08:09 ? 次閱讀

一、到底什么是NVIC?


NVIC(Nested Vectored Interrupt Controller)中文翻譯為:嵌套中斷向量控制器。

NVIC屬于內(nèi)核級別的外設(shè)單元,用來管理CPU的中斷。

由NVIC管理的中斷可進(jìn)行中斷嵌套,直譯為高優(yōu)先級可打斷低優(yōu)先級中斷,然后高優(yōu)先級執(zhí)行完了再轉(zhuǎn)回去執(zhí)行低優(yōu)先級中斷。

對于RTOS(實時操作系統(tǒng))類型的OS有很大的好處,所以先搞懂NVIC,再去涉獵RTOS,會更加的輕松。

二、搶占和次級優(yōu)先級說明?

NVIC的優(yōu)先級分為搶占和次優(yōu)先級,這兩種優(yōu)先級共同來管理所有中斷的響應(yīng)次序以及是否能被打斷,如下圖所示:

fc9ac6d4-eef2-11ee-9118-92fbcf53809c.png

上圖中斷響應(yīng)分為三種情況:

第一種情況搶占優(yōu)先級不在同一級別:當(dāng)中斷源C正在被執(zhí)行時,中斷源A發(fā)生了中斷,這時會去比較搶占優(yōu)先級,因為A的搶占優(yōu)先級別比C高,所以會將C中斷掛起,轉(zhuǎn)而去執(zhí)行A中斷,當(dāng)A中斷執(zhí)行完了又回去繼續(xù)執(zhí)行C中斷。

第二種情況搶占優(yōu)先級在同一級別:當(dāng)中斷源B正在被執(zhí)行時,中斷源A發(fā)生了中斷,這時會去比較搶占優(yōu)先級,因為A的搶占優(yōu)先級別和B相等,所以不會打斷B中斷,須等待B執(zhí)行結(jié)束轉(zhuǎn)而去執(zhí)行A中斷。

第三種情況搶占優(yōu)先級在同一級別:當(dāng)中斷源A、B同時發(fā)生了中斷,因為A和B的搶占優(yōu)先級相等,轉(zhuǎn)而會繼續(xù)比較次優(yōu)先級,而A的次優(yōu)先級比B高,所以會先執(zhí)行A然后再執(zhí)行B。

NVIC的搶占優(yōu)先級和次優(yōu)先級數(shù)量是有限的,這需要自己設(shè)置有多少個搶占優(yōu)先級和一個搶占優(yōu)先級里面有多少個次優(yōu)先級。

fca17d3a-eef2-11ee-9118-92fbcf53809c.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • RTOS
    +關(guān)注

    關(guān)注

    22

    文章

    813

    瀏覽量

    119643
  • NVIC
    +關(guān)注

    關(guān)注

    0

    文章

    35

    瀏覽量

    11700
收藏 人收藏

    評論

    相關(guān)推薦

    為什么不會接開關(guān)呢?是因為不懂這些

    電工技術(shù)
    學(xué)習(xí)電子知識
    發(fā)布于 :2022年10月13日 20:58:36

    工作之所以成為工作,是因為只需要工作而不需要...

    有這么一句名言: 工作,它之所以成為工作,是因為只需要工作而不需要思考。   也許會對這句話有異議,但是大部分人和大部分工作確實是這樣的。工廠員工在流水線上機(jī)械地組裝,服務(wù)員每天重復(fù)著招待
    發(fā)表于 11-19 16:47

    用malab GUI做的鋼琴鍵盤,但是callbacks一直搞懂

    用malab GUI做的鋼琴鍵盤,但是callbacks一直搞懂,希望有人能幫幫忙,小弟在此謝過啦
    發(fā)表于 01-04 20:12

    AD仿真,這個錯誤是因為什么?

    這個錯誤是因為什么?
    發(fā)表于 11-03 21:53

    Atmage128重啟或死機(jī),是因為電源處理好還是什么原因?

    用Atmage128 通過 光耦隔離驅(qū)動模塊 驅(qū)動直流有刷電機(jī),電機(jī)參數(shù)是12V,300W,有時候在電機(jī)加速過程中,MCU就會重啟或死機(jī)(422通訊中斷),是因為電源處理好還是什么原因?用
    發(fā)表于 07-20 08:45

    實驗加也可以中斷

    usart實驗NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0);這句要加?我加也可以中斷而我同學(xué)寫的一個實驗,必須加這句,不加不會進(jìn)中斷,不只哪里
    發(fā)表于 05-30 01:16

    什么是NVIC

    工作中涉及到stm32掛載非接中斷子程序,有時候共用外部中斷口線時,對中斷口線的處理得學(xué)習(xí)下,順便了解下中斷優(yōu)先級設(shè)置。此文章從網(wǎng)上搜到轉(zhuǎn)載記錄下。出處:如果需要在STM32上移植RTOS,那么首先必須深入理解它的中斷系統(tǒng)。什么是NV
    發(fā)表于 08-13 08:40

    如何在RTOS中使用lwip庫?

    行不通的。我混淆了設(shè)置優(yōu)先級(根據(jù) FREE RTOSNVIC)lwip 和 RTOS能給我建議嗎? 最好的祝福。
    發(fā)表于 01-16 07:28

    stlink無法識別是因為什么?

    stlink無法識別是因為什么
    發(fā)表于 10-31 06:40

    電死人的原因到底是因為電壓還是電流

    我們都知道要遠(yuǎn)離高電壓,因為高電壓對人來說是危險的,這是一個常識。觸摸到高電壓的東西,人就會發(fā)生危險,嚴(yán)重的可導(dǎo)致死亡。但觸電傷亡是因為高電壓的緣故還是高電流的緣故呢?
    的頭像 發(fā)表于 07-14 11:08 ?1.7w次閱讀

    學(xué)STM32入門很難?那是因為掌握正確的方法!

    對于STM32的學(xué)習(xí),其實不用想的太復(fù)雜,畢竟它只是一個單片機(jī),只是比51單片機(jī)增加了一些外設(shè)而已,寄存器由8位變成了32位罷了。所以明白這些就擺正心態(tài),一點一點循序漸進(jìn)的學(xué)習(xí)就可以了。下面我
    發(fā)表于 12-07 18:21 ?0次下載
    學(xué)STM32入門很難?那<b class='flag-5'>是因為</b><b class='flag-5'>你</b><b class='flag-5'>沒</b>掌握正確的方法!

    STM32F1----NVIC

    1.NVIC初始化流程配置中斷優(yōu)先級分組void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);建立
    發(fā)表于 01-17 09:37 ?6次下載
    STM32F1----<b class='flag-5'>NVIC</b>

    磐石測控:深圳按鍵開關(guān)不靈敏是因為什么?

    磐石測控:深圳按鍵開關(guān)不靈敏是因為什么?
    的頭像 發(fā)表于 10-31 11:46 ?694次閱讀
    磐石測控:深圳按鍵開關(guān)不靈敏<b class='flag-5'>是因為</b>什么?

    推挽電路的坑,踩過?

    推挽電路的坑,踩過?
    的頭像 發(fā)表于 11-24 16:25 ?1121次閱讀
    推挽電路的坑,<b class='flag-5'>你</b>踩過<b class='flag-5'>沒</b>?

    錫膏不上錫是因為活性不足嗎?

    眾所周知,有時候錫膏不上錫是因為活性不足,還有人會說活性越多越好。有時候錫膏不掛錫是因為活性不足嗎。這樣的話,會覺得錫膏的活性越高越好嗎?下一步由深圳錫膏廠家為大家分析一下:大家都知道錫膏中有許多
    的頭像 發(fā)表于 01-04 15:46 ?640次閱讀
    錫膏不上錫<b class='flag-5'>是因為</b>活性不足嗎?