對於Cortex M0核心的中斷的搶占和巢狀的理解

2021-10-03 12:45:44 字數 1063 閱讀 9397

首先,我們需要理清楚異常中斷的關係:

異常是能夠引起程式流偏離正常流程的事件,當異常 發生的時候,正在執行的程式就會處於掛起狀態,處理器轉而執行一塊與該事件相關的**塊(異常處理)

事件可以是外部輸入也可以是內部產生,外部產生的事件被稱為 中斷或者中斷請求(irq),微控制器的中斷可以由片上外設或者軟體產生

異常巢狀異常或被劃分為多個優先順序,在執行低優先順序的異常時,更高優先順序的異常可以被觸發並且被執行,這一過程被稱作為異常巢狀

1 cortex-m0可以支援1~32個中斷,外部中斷只有在使能以後才能夠被使用,如果該中斷被禁止或者當預處理器正在處理等級更高的優先順序的異常處理,則該中斷會被儲存在掛起狀態暫存器中。

2 在cortex-m0處理當中每個異常都對應乙個優先順序,優先順序決定著該異常是否執行或者是延遲執行(掛起狀態)

cortex-m0處理器支援

3個固定的最高優先順序

以及4個可程式設計的優先順序

搶占如果發生已經使能了的異常,此時沒有其他異常處理正在執行,而且遮蔽中斷暫存器沒有遮蔽該異常,那麼處理器就會接受該異常並且轉而執行新的異常,從當前正在執行的任務切換到異常處理 的過程叫做搶占==

搶占是一種現象,是處理器基於異常優先順序的等級發生任務處理切換的一種現象,包括從普通程式流切換到異常處理程式模組,新的異常等級高於當前正在執行的異常

中斷巢狀或者異常巢狀是當第二種搶占發生時,也就是 產生了新的異常

當預處理器正在處理乙個已經有的異常

正在處理的異常被暫停,處理器切換到新發生的更高等級的異常

其實 可以認為 的是發生中斷巢狀的前提條件是發生了搶占

如果兩個異常同時發生,並且他們被賦予 了相同的優先順序,異常編號較小的優先順序將會被執行。也就是說會存在多個中斷編號不同的中斷,他們的異常優先等級可能是相同的。

以上成立的兩個條件 1 處理器允許這些中斷

2 處理器此時也沒有執行這些中斷

Cortex M0 核心的處理器架構簡介

cortex m0處理器具有32位系統匯流排介面,以及32位位址線,即有4gb的位址空間。系統匯流排基於ahb lite高階高效能匯流排協議。外設匯流排基於apb高階外設匯流排協議,通過乙個轉換橋連線到ahb上。這只是cortex m0核心的大概模式,cortex m0 的儲存器系統與cortex ...

新唐Cortex M0學習之外部中斷與定時器中斷

進入南航的學習已經兩周了,從開始接觸新唐的cortex m0到現在,對它的整體架構有了一定的認識,但是還是不足,以此記下自己的一點心得很成果,與大家一起分享!這次的專案是紅外模組,即實現捕捉紅外訊號,解碼,發射紅外訊號,讓開發板學習紅外訊號!天下大事,必作於細,學習不是一朝一夕能夠解決的事情,所以第...

Cortex M0檔案說明

1 cortexm0ds logic.v cortex m0 designstart處理器邏輯層v檔案。2 cortexm0ds.v cortex m0 designstart處理器巨集單元級描述。3 ahbdcd.v ahb匯流排位址解碼器。4 ahbmux.v ahb匯流排從裝置多路選擇器。5 ...