摘要:中斷服務函數入口響應中斷,就是要去執行相應的中斷服務程序,其響應過程是將現在執行程序的指令地址壓入堆棧,跳轉到中斷服務程序入口地址,中斷服務程序的入口地址就是中斷向量,這個中斷向量用個位寄存器存放。完成這些任務準備執行中斷服務程序。
A、開始;
B、PIEIFRx.y = 1 ?是,轉到C,否則等待;
C、PIEIERx.y = 1 ?是,轉到D,否則等待;
D、PIEACKx = 0 ?是,轉到E,否則等待;
E、中斷請求發送到CPU;
F、IFRx位置1;
G、IERx = 1 ?是,轉到H,否則等待;
H、INTM = 0 ?是,轉到I,否則等待;
I、CPU響應,進入中斷服務子程序前,DSP硬件自動將IFRx清0,然后將CPU內一些關鍵寄存器如:ST0、ST1及IER等的內容壓到堆棧保存起來,隨后硬件自動將IERx清0,INTM置1,以避免中斷嵌套,在中斷服務子程序執行完返回后,這些保存的內容會自動從堆棧中彈出,將原寄存器的內容恢復。因此ISR中不需要再進行INTM清0和IER置1操作,但必須注意的是:在ISR中執行完中斷響應任務之后,返回前,必須將外設寄存器中的中斷標志軟件清0,這樣外設中斷才能再次產生;
J、從PIE處取中斷矢量,PIEIFRx.y被清除,CPU轉到ISR執行。這里從PIE中斷向量表中可以取到中斷服務子程序的地址,它是一個32位的矢量,中斷矢量被取出后,PIE模塊中的中斷標志PIEIFRx.y被自動清0,但該中斷x對應的PIE應答位PIEACKx在中斷服務子程序ISR中必須軟件清0(寫1清0),這樣才能接受下一個外圍中斷。
K、中斷返回。
?
func :中斷服務函數入口;XINT3
?
CPU響應中斷,就是CPU要去執行相應的中斷服務程序,其響應過程是CPU將現在執行程序的指令地址壓入堆棧,跳轉到中斷服務程序入口地址,中斷服務程序的入口地址就是中斷向量,這個中斷向量用2個16位寄存器存放。入口地址是22位的,地址的低16位保存在該向量的低16位,地址的高16位則保存在它的高6位,更高的10位保留。
?
?
上圖為外設復用中斷向CPU申請中斷的流程。
步驟一:任何一個PIE中斷組的外設或外部中斷產生中斷。如果外設模塊內的中斷被使能,中斷請求將被送到PIE模塊。
步驟二:PIE模塊將識別出別的PIE中斷組x內的y中斷(INTx.y)申請,然后相應的PIE中斷標志位被鎖存:PIEIFRx.y=1。
步驟三:PIE的中斷如要送到CPU需滿足下面兩個條件:
1.相應的使能位必須被設置(PIEIERx.y=1)。
2.相應的PIEACKx位必須被清除。
步驟四:如果滿足步驟三中的兩個條件,中斷請求將被送到CPU并且相應的響應寄存器位被置1(PIEACKx=1)。PIEACKx位將保持不變,除非為了使本組中的其他中斷向CPU發出申請而清除該位。
步驟五:CPU中斷標志位被置位(CPUIFRx=1),表明產生一個CPU級的掛起中斷。
步驟六:如果CPU中斷被使能(CPUIERx=1,或DBGIERx=1),并且全局中斷使能(INTM=0),CPU將處理中斷INTx。
步驟七:CPU識別到中斷并且自動保存相關的中斷信息,清除使能寄存器(IER)位,設置INTM,清除EALLOW。CPU完成這些任務準備執行中斷服務程序。
步驟八:CPU從PIE中獲取響應的中斷向量。
步驟九:對于復用中斷,PIE模塊用PIEIERx和PIEIFRx寄存器中的值確定響應中斷的向量地址。有以下兩種情況:
1.在步驟四中若有更高優先級的中斷產生,并使能了PIEIERx寄存器,且PIEIFRx的相應位處于掛起狀態,則首先響應優先級更高的中斷。
2.如果在本組內沒有掛起的中斷被使能,PIE將響應組內優先級最高的中斷,調轉地址使用INTx.1。這種操作相當于處理器的TRAP或INT指令。
CPU進入中斷服務程序后,將清除PIEIFRx.y位。需要說明的是,PIEIERx寄存器用來確定中斷向量,在清除PIEIERx寄存器時必須注意。
?
?
?
?
?
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/120919.html
摘要:嵌入式實時操作系統是一個特殊的程序通常稱為內核,它可以創建,銷毀,控制所有任務。顯示處理函數運行過程中,定時器產生中斷,系統進入定時器中斷程序將傳感器標志位置。實時操作系的子系統將再后續持續更新。 ...
摘要:復位后初值是子函數調用,中斷響應過程調用子函數處理中斷響應的時候,程序計數器的值以及相關數據會先壓入堆棧,然后去處理子函數中斷服務。聯動文章身家過億的帝都富豪對小碼農說你時空復雜度會了嗎 ...
摘要:沒有提供一種安全直接的方法來停止某個線程,但是提供了中斷機制。中斷的原理中斷機制是一種協作機制,也就是說通過中斷并不能直接終止另一個線程,而需要被中斷的線程自己處理中斷。線程的中斷狀態由該方法清除。測試線程是否已經中斷。 1. 引言 當我們點擊某個殺毒軟件的取消按鈕來停止查殺病毒時,當我們在控制臺敲入quit命令以結束某個后臺服務時……都需要通過一個線程去取消另一個線程正在執行的任務...
摘要:原文地址深入淺出之獨占鎖模式深入淺出之共享鎖模式深入淺出之條件隊列前面三篇文章如果之前沒有基礎的話看起來會比較吃力,這篇文章說明一下的基礎知識,方便快速了解。當前節點由于超時或者中斷被取消,節點進入這個狀態以后將保持不變。 之前分析了AQS中的獨占鎖,共享鎖,條件隊列三大模塊,現在從結構上來看看AQS各個組件的情況。 原文地址:http://www.jianshu.com/p/49b8...
摘要:為了拓展同步代碼塊中的監視器鎖,開始,出現了接口,它實現了可定時可輪詢與可中斷的鎖獲取操作,公平隊列,以及非塊結構的鎖。 前言 系列文章目錄 前面幾篇我們學習了synchronized同步代碼塊,了解了java的內置鎖,并學習了監視器鎖的wait/notify機制。在大多數情況下,內置鎖都能很好的工作,但它在功能上存在一些局限性,例如無法實現非阻塞結構的加鎖規則等。為了拓展同步代...
閱讀 2255·2023-04-26 02:14
閱讀 2926·2021-09-30 09:46
閱讀 2100·2021-09-24 09:48
閱讀 952·2021-09-24 09:47
閱讀 3252·2019-08-30 15:44
閱讀 1878·2019-08-30 15:44
閱讀 3278·2019-08-30 14:18
閱讀 1948·2019-08-30 12:58