DSP中斷總結

2021-08-21 04:37:35 字數 1060 閱讀 7987

c55x支援32個isr。有些isr可以由軟體或硬體觸發,有些只能由軟體觸發。

當cpu同時收到多個硬體中斷請求時,cpu會按照預先定義的優先順序對它們做出響應和處理。

(2)響應中斷請求。cpu必須響應中斷。如果是可遮蔽中斷,響應必須滿足某些條件。如果是不可遮蔽中斷,則cpu立即響應。

(3)準備進入中斷服務子程式。

cpu要執行的主要任務有:

完成當前指令的執行,並沖掉流水線上還未解碼的指令

自動將某些必要的暫存器的值儲存到資料堆疊和系統堆疊

從使用者實現設定好的向量位址獲取中斷向量,該中斷向量指向中斷服務子程式

cpu執行使用者編寫的isr。isr以一條中斷返回指令結束,自動恢復步驟(3)中自動儲存的暫存器值。

☼  注意:

外部中斷只能發生在cpu退出復位後的至少3個週期後,否則無效;

在硬體復位後,不論intm位的設定和暫存器ier0、ier1的值如何,所有的中斷都被禁止,直到通過軟體初始化堆疊後才開放中斷。

c55x的不可遮蔽中斷有:

硬體中斷/reset。如果引腳/reset為低電平,則觸發了乙個dsp硬體復位和乙個中斷(迫使執行復位isr)。

硬體中斷/nmi。如果引腳/nmi為低電平,則cpu必須執行相應的isr。 /nmi提供了一種通用的無條件中斷dsp的硬體方法。

軟體中斷。

需要處理任何特殊中斷遮蔽(通過ier0暫存器)。通過嵌入組合語言語句可以使能或禁止中斷,也可以修改ier0暫存器而不會破壞c環境或c指標。

中斷處理程式不能有引數,即使宣告了引數也會被忽略

中斷處理程式不能被普通c**呼叫。

在組合語言中,需要在中斷程式名前加下劃線,如_c_int00。

分配堆疊到偶位址。

c_int00是系統復位中斷。當進入c_int00中斷時,執行時間堆疊並沒有被建立起來,因此不能為區域性變數分配位址,也不能在執行時間堆疊中儲存任何資訊。

c_int00是c程式入口。這個名字被儲存為系統重啟中斷。這個特殊的中斷程式初始化系統並呼叫了主函式。因為沒有呼叫者,所以c_int00不儲存任何暫存器。     例,

interrupt void isr()

DSP之中斷總結篇

1 中斷概述 中斷定義 由硬體或軟體驅動的訊號,使dsp將當前的程式掛起,執行另乙個稱為中斷服務子程式 isr 的任務。c55x支援32個isr。有些isr可以由軟體或硬體觸發,有些只能由軟體觸發。當cpu同時收到多個硬體中斷請求時,cpu會按照預先定義的優先順序對它們做出響應和處理。所有的軟體中斷...

DSP中的查詢與中斷

以前用2407程式設計,主程式就在乙個main迴圈中,所有的資源響應 資料處理都要在這個裡面,就相當於只有乙個執行緒來幹所有的事情,大家都想搶時間。外設資源訊號我們不能確定什麼時候能來,採用查詢方式就不是那麼好使,而且查詢方式有一點蒙的感覺。當然,你可以延長查詢的時間,但這樣就影響了dsp處理其他資...

DSP 中斷暫存器

幾乎所有的mcu都不允許mov指令修改pc值,這是乙個常識。2.中斷服務表指標暫存器istp interrupt servicetable pointer 用於確定中斷服務程式在中斷服務表中的位址。istp中的字段istb確定ist的位址的基值,另一欄位hpeint確定特定的中斷,並給出這一特定中斷...