《小談DJYOS中斷線的配置方法》

2021-07-02 15:57:50 字數 1604 閱讀 5677

djyos中斷控制塊的結構示意圖如圖1所示:

圖1 djyos中斷控制塊結構示意圖

djyos中中斷執行流程如下:中斷源產生中斷請求irq-->跳轉至中斷向量表中查詢相應isr及中斷號-->儲存現場

-->呼叫djyos的中斷入口函式int_engine_all-->判斷中斷類別(real或sync)-->呼叫使用者註冊的中斷服務函式——返回至isr並恢復現場——中斷返回。

ok,了解了djyos的中斷處理流程,如何將中斷源掛接到圖1所示djyos的中斷控制塊上呢?歸納以下,需要以下3個步驟,

step1:在cpu_peri_int_line.h中定義中斷號,每款cpu都定義自己的中斷源及中斷號,發生中斷號後,硬體會根據這個中斷號跳轉到中斷向量表中相應的位置執行中斷isr,這裡需要確保定義的中斷號與該款cpu datasheet中定義中斷號保持一致。

step2:在critical.c中配置當前工程使用到的中斷號,具體配置方法為在全域性陣列tg_intused新增相應的中斷號,如mcb1700工程中配置的

constufast_t tg_intused =

;

step3:對於使用具體中斷時,需要依次呼叫以下5個函式:

1.bool_t int_setcleartype(ufast_t ufl_line,ufast_t clear_type)  //設定某中斷線的應答方式

2.void int_isrconnect(ufast_t ufl_line, u32 (*isr)(ufast_t))    //關聯中斷線與isr

3.bool_t int_settoasynsignal(ufast_t ufl_line)/ bool_t int_settoreal(ufast_t ufl_line)  //設定中斷為非同步訊號or實時中斷

4.bool_t int_clearline(ufast_t ufl_line)     //清除相應中斷線的中斷掛起狀態

5.bool_t int_restoreasynline(ufast_t ufl_line)/ bool_t int_restorerealline(ufast_t ufl_line)  //恢復儲存的非同步訊號或實時中斷中斷線狀態(與第3個函式保持一致)

完成了以上3個步驟,你就可將自己的中斷isr函式在djyos中運轉起來了。當然這裡還有乙個前提就是你手頭上的板子關於djyos的中斷移植部分(即bsp目錄下int_hard.c/int_hard.h)已經完成,關於這部分下次再嘮叨嘮叨。

上文如有不當之處,敬請指正,歡迎拍磚~~~

中斷執行緒的方式

變數標識 匿名內部類使用區域性變數時,必須是 final,否則編譯報錯 匿名內部類使用字段,不需要 final 使用 volatile 修飾,實現多執行緒間變數的可見性 volatile boolean loop true while condition test public void testw...

JAVA中斷執行緒的方法

thread.stop,thread.suspend,thread.resume和runtime.runfinalizersonexit這些終止執行緒執行的方法已經被廢棄,使用它們是極端不安全的!現在,如果你要安全有效地終止乙個執行緒,應該採用以下這些方法 1,執行緒正常執行完畢,正常結束。也就是讓...

Java中斷執行緒的方式

方式一 stop 方法 目前改方法已被註解 deprecated,因為它是執行緒不安全的操作,呼叫stop方法後,執行緒會立即停止,導致執行緒邏輯有一部分未執行,造成得到不可預期的結果。如下 中,預期輸出的結果是i j,但是使用stop中斷執行緒後,大概率出現j i 1.public class s...