LiteOS——MCU中斷切換原理【拜托了,物聯(lián)網(wǎng)!】

      網(wǎng)友投稿 1194 2025-04-01

      0、前沿


      LiteOS——MCU中斷切換原理【拜托了,物聯(lián)網(wǎng)!】

      嵌入式經(jīng)常會(huì)說到“中斷”的概念,那中斷到底是什么呢?MUC如何完成中斷任務(wù)的呢?

      1、中斷概念

      中斷(Interrupt)是指處理器接收到來自硬件或軟件的信號(hào),提示發(fā)生了某個(gè)事件,應(yīng)該被注意,這種情況就稱為中斷。

      通常,在接收到來自外圍硬件(相對(duì)于中央處理器和內(nèi)存)的異步信號(hào),或來自軟件的同步信號(hào)之后,處理器將會(huì)進(jìn)行相應(yīng)的硬件/軟件處理。發(fā)出這樣的信號(hào)稱為進(jìn)行中斷請(qǐng)求(interrupt request,IRQ)。硬件中斷導(dǎo)致處理器通過一個(gè)運(yùn)行信息切換(context switch)來保存執(zhí)行狀態(tài)(以程序計(jì)數(shù)器和程序狀態(tài)字等寄存器信息為主);軟件中斷則通常作為MCU指令集中的一個(gè)指令,以可編程的方式直接指示這種運(yùn)行信息切換,并將處理導(dǎo)向一段中斷處理代碼。中斷在計(jì)算機(jī)多任務(wù)處理,尤其是即時(shí)系統(tǒng)中尤為有用。這樣的系統(tǒng),包括運(yùn)行于其上的操作系統(tǒng),也被稱為“中斷驅(qū)動(dòng)的”。

      2、中斷過程

      在實(shí)際運(yùn)行中,一旦設(shè)備通過某引腳N向MCU發(fā)出中斷指令,后者便向MUC的INTR引腳發(fā)送中斷信號(hào)。MCU通過INTA引腳通知MCU中斷有效(這個(gè)過程實(shí)際上還包括對(duì)此MCU的選址),后者即通過地址總線將對(duì)應(yīng)引腳N的中斷類型碼發(fā)送給MCU。MCU得到中斷類型碼后,先進(jìn)行現(xiàn)場(chǎng)保護(hù)

      保護(hù)現(xiàn)場(chǎng):

      1??狀態(tài)寄存器進(jìn)行壓棧;

      2??關(guān)閉中斷;

      3??將當(dāng)前代碼段寄存器CS和程序計(jì)數(shù)器IP壓棧。

      現(xiàn)場(chǎng)保護(hù)完成后,MCU開始按照前述的兩步驟翻譯中斷程序入口地址。在得到中斷處理程序地址之后但調(diào)用中斷處理程序之前,CPU會(huì)再檢查一下NMI引腳是否有信號(hào),以防在剛才的處理過程中忽略了可能的NMI中斷。NMI的優(yōu)先級(jí)始終高于INTR。

      在程序結(jié)束時(shí),應(yīng)該按與壓棧保護(hù)時(shí)相反的順序彈出各寄存器的值。中斷程序的最后一句始終是IRET指令,這條指令將棧頂6個(gè)字節(jié)分別彈出并存入IP、CS和FLAGS寄存器,完成了現(xiàn)場(chǎng)的還原。

      3、中斷類型

      常見MCU架構(gòu)定義的中斷類型分為 :

      外部中斷(External Interrupt),指來自處理器核外部的中斷,例如 GPIO、UART 等產(chǎn)生的中斷

      計(jì)時(shí)器中斷(Timer Interrupt) ,指來自計(jì)時(shí)器的中斷

      軟件中斷(Software Interrupt) ,指來自軟件自己觸發(fā)的中斷

      調(diào)試中斷(Debug Interrupt),專用于實(shí)現(xiàn)調(diào)試器

      4、中斷控制器

      Cortex-M 系列包含一個(gè) NVIC(嵌套中斷向量控制器)提供硬件嵌套中斷服務(wù)。在中斷發(fā)生時(shí),NVIC 自動(dòng)取出對(duì)應(yīng)的服務(wù)例程入口地址,并且直接調(diào)用,無需軟件判定中斷源。另外 M 系列包含一個(gè)基本的 systick 定時(shí)器,配合 NVIC 工作,用于系統(tǒng)計(jì)數(shù)。

      5、LiteOS的中斷管理

      Huawei LiteOS對(duì)傳統(tǒng)MCU控制中使用中斷進(jìn)行管理處理,其中斷特性為:

      中斷共享,且可配置。

      中斷嵌套,即高優(yōu)先級(jí)的中斷可搶占低優(yōu)先級(jí)的中斷,且可配置。

      使用獨(dú)立中斷棧,可配置。

      可配置支持的中斷優(yōu)先級(jí)個(gè)數(shù)。

      可配置支持的中斷數(shù)。

      LIteOS在開發(fā)中斷程序會(huì)涉及到創(chuàng)建中斷、設(shè)置中斷親和性、使能中斷、觸發(fā)中斷、屏蔽中斷、刪除中斷一些列操作

      #include "los_hwi.h" #include "los_typedef.h" #include "los_task.h" STATIC VOID HwiUsrIrq(VOID) //中斷服務(wù)程序,觸發(fā)后跳轉(zhuǎn)到這里執(zhí)行。 { printf("\n in the func HwiUsrIrq \n"); } /* cpu0 trigger, cpu0 response */ UINT32 It_Hwi_001(VOID) { UINT32 ret; UINT32 irqNum = 26; /* ppi */ UINT32 irqPri = 0x3; ret = LOS_HwiCreate(irqNum, irqPri, 0, (HWI_PROC_FUNC)HwiUsrIrq, 0); //創(chuàng)建中斷,中斷好配置,中斷服務(wù)函數(shù)地址說明,優(yōu)先級(jí)配置 if (ret != LOS_OK) { return LOS_NOK; } #ifdef LOSCFG_KERNEL_SMP ret = LOS_HwiSetAffinity(irqNum, CPUID_TO_AFFI_MASK(ArchCurrCpuid())); //設(shè)置中斷親和性 if (ret != LOS_OK) { return LOS_NOK; } #endif ret = LOS_HwiEnable(irqNum);//使能中斷 if (ret != LOS_OK) { return LOS_NOK; } ret = LOS_HwiTrigger(irqNum);/ if (ret != LOS_OK) { return LOS_NOK; } LOS_TaskDelay(1); ret = LOS_HwiDisable(irqNum);//去使能中斷 if (ret != LOS_OK) { return LOS_NOK; } ret = LOS_HwiDelete(irqNum, NULL);//刪除中斷服務(wù)連接,釋放內(nèi)存 if (ret != LOS_OK) { return LOS_NOK; } return LOS_OK; }

      上面利用代碼進(jìn)行簡(jiǎn)要明。使用這些前提都是在LiteOS設(shè)置中打開和配置好中斷功能。

      【拜托了,物聯(lián)網(wǎng)!】有獎(jiǎng)?wù)魑幕馃徇M(jìn)行中:https://bbs.huaweicloud.com/blogs/296704

      單片機(jī) 輕量級(jí)操作系統(tǒng) LiteOS

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:為什么初創(chuàng)企業(yè)應(yīng)該使用OKR(企業(yè)在初創(chuàng)階段需要注意哪些問題)
      下一篇:word怎么把字體改成繁體(word文字怎么改為繁體字)
      相關(guān)文章
      亚洲s码欧洲m码吹潮| 亚洲国产精品美女| 亚洲熟女综合一区二区三区| 久久精品国产亚洲αv忘忧草 | 亚洲无线电影官网| 亚洲天堂中文字幕| 亚洲精品电影天堂网| 亚洲免费在线视频播放| 亚洲Av无码一区二区二三区| 亚洲国产av美女网站| ASS亚洲熟妇毛茸茸PICS| 2019亚洲午夜无码天堂| 亚洲性无码AV中文字幕| 亚洲欧洲无卡二区视頻| 亚洲成a∨人片在无码2023| 亚洲性无码AV中文字幕| 精品国产亚洲一区二区三区在线观看| 亚洲乱亚洲乱妇24p| 精品韩国亚洲av无码不卡区| www.亚洲色图| 国产亚洲av片在线观看18女人| 国产成人综合亚洲AV第一页| 亚洲熟妇无码另类久久久| 亚洲国产精品成人久久 | 亚洲精华国产精华精华液好用 | 亚洲国产一区国产亚洲| 亚洲黄色在线视频| 亚洲一区电影在线观看| 亚洲日本在线电影| 一本久到久久亚洲综合| 亚洲中文字幕无码久久2017| 亚洲AV永久无码精品水牛影视| 久久精品国产亚洲AV麻豆不卡| 亚洲国产精品久久66| 亚洲系列中文字幕| 亚洲日韩久久综合中文字幕| 国产亚洲精品2021自在线| 亚洲综合在线另类色区奇米| 亚洲va在线va天堂va不卡下载 | 中文字幕亚洲日韩无线码| 久久精品国产亚洲AV麻豆不卡 |