UCOSIII 中斷和時間管理

2021-10-03 17:24:05 字數 645 閱讀 3288

ucosiii支援中斷巢狀,高優先順序中斷可以打斷低優先順序中斷,在ucosiii中使用osintnestingctr來記錄中斷巢狀次數,最大支援250級巢狀,沒進乙個中盾巢狀osintnestingctr就加1,反之則減1

進入中斷函式:osintenter(),僅進行osintnestingctr加1操作

退出中斷函式:osintexit()

void ***_handler(void)

臨界段**也叫臨界區,這部分**不能被系統打斷。

進入臨界區:os_critical_enter()

退出臨界區:os_critical_exit()是退出還進行任務排程,os_critical_exit_no_sched()退出不進行任務排程

ucosiii對中斷發布訊息或者訊號的處理有兩種模式:直接發布和延遲發布。巨集os_cfg_isr_post_deferred_en來選擇,置0使用直接發布,置1使用延遲發布。

直接發布模式下,ucosiii通過關中斷保護臨界區**,延遲模式下通過鎖定任務排程

延遲模式的速度高於直接模式,兩者僅是模式不同,**無需更改。

ostimeget(),獲取當前時鐘節拍技術器的值

ostimeset(),設定當前時鐘節拍計數器的值,最好別使用

ucos iii學習之時間管理

與時間服務相關的api總結 任務呼叫這個函式後就會被掛起直到期滿。這個函式可以有三種模式 相對延時模式,週期性延時模式,絕對定時模式。1 相對延時模式 任務每次執行時都會被延時大約2毫秒。當任務在時基中斷將要到來時被掛起,那麼實際的延時時基會少乙個時基。2 週期性延時 任務設定匹配值決定了任務被喚醒...

中斷,時鐘,時間管理 C OS II

裸機的中斷和 c os ii的中斷大體相同,但也有不同的地方。具體為以下幾個方面 由上述可知,我們需要記錄中斷巢狀層數,因此需要在執行中斷服務函式 前,對中斷巢狀層數計數器 1 退出中斷服務函式前,對中斷巢狀層數計數器 1,並執行一次任務排程,具體實現方法如下 void irqhandler voi...

uc os iii學習筆記 中斷管理

中斷 應內部或外部非同步事件的請求中止當前任務,而去處理非同步事件所要求的任務的過程叫做中斷 void usart1 irqhandler void 進入中斷服務函式以後使用函式osintenter void osintenter void if osintnestingctr os nesting...