UCOSII下外部中斷的實現

2022-03-16 22:17:40 字數 1021 閱讀 8225

// exti initialize 

void extix_init(void)

其中幾個關鍵的中斷函式(定義在bsp_int.c)

void bsp_intvectset(cpu_data int_id, cpu_fnct_void isr);//設定中斷向量及處理中斷服務函式,產生中斷時將跳至中斷服務函式的位址 

void bsp_inten (cpu_data int_id) //使能指定中斷 

void bsp_intdis (cpu_data int_id) //禁用指定中斷(視程式需要) 

void bsp_intdisall (void) //禁用所有中斷(視程式需要)

void nvicstr_init(void)

在bsp_int.c中,還有乙個函式可用來設定中斷優先順序,有興趣的讀者可以試試 

void bsp_intprioset (cpu_data int_id, cpu_int08u prio) //設定中斷優先順序

這裡的中斷服務函式名可以自己定義,不過也不能太隨便,至少要能看出來是哪個中斷的對接函式

//exti1 interrupt handle

void exti1_irqhandler()

中斷服務函式名需與外部中斷初始化中的bsp_intvectset()第二個引數一致 

這裡還需講明一點,函式中用到了osintenter() 與 osintexit(),這裡大概講一下作用 

在uc/os-ii中,通常在進入中斷時需要使用osintenter() ;退出中斷前使用osintexit(); 

在中斷服務函式中使用這對函式,在中斷結束後可進行任務排程,使得系統更加「實時」 

若中斷函式的執行不做訊號量處理,對任務沒有觸發作用的,可以忽視不用

這樣就完成了外部中斷的配置,把extix_init()放入系統初始化函式中,執行時待指定的io有高低電平觸發時,將觸發對應的中斷操作 

UC OS II的中斷和時鐘

3.1.1 uc os ii 的中斷過程 為了記錄中斷巢狀的層數,uc os ii 定義了乙個全域性變數 osintnesting 兩個重要函式 osintenter 和osintexit 函式osintenter 的作用就是把全域性變數 osintnesting加1 被用於記錄中斷巢狀層數。voi...

uC OS II的中斷和時鐘

前提 uc os ii是乙個可剝奪型核心,cpu每時每刻都處理優先順序最高的任務。主要內容 1 uc os ii的中斷管理和中斷服務程式的結構 2 uc os ii的系統時鐘及實現方法 3 uc os ii的時間管理服務 延時 取消延時 中斷 停止當前的事,去處理異常要求事件。在系統執行過程中,當系...

外部中斷的使用

stm32學習筆記 外部中斷的使用 中斷對於開發嵌入式系統來講的地位絕對是毋庸置疑的,在c51 微控制器時代,一共只有 5個中斷,其中 2個外部中斷,2個定時 計數器中斷和乙個串列埠中斷,但是在 stm32 中,中斷數量大大增加,而且中斷的設定也更加複雜。今天就將來 一下關於 stm32 中的中斷系...