uCOS II任務之延時函式

2021-09-22 19:58:03 字數 1558 閱讀 5486

1.在ucos-ii裡,系統也提供了這樣的延時函式。乙個是大眾版的ostimedly(),乙個是精緻版的ostimedlyhmsm()。 蘿蔔青菜,各有所愛,隨你怎麼選。

這兩者的區別是,ostimedly()的延時時間是以節拍數來衡量的,ostimedlyhmsm()的延時時間則是以具體時間大小來衡量的。

這兩個函式有著非常重要重要的作用,就是當你呼叫這兩個函式的時候,ucos ii 會進行一次任務排程。所以cpu能在各任務間進行切換,很大功勞得益於這兩個函式。

呼叫這兩個延時函式都會掛起本任務,cpu就會執行就緒表中優先順序最高的任務。

有一點要注意的是任務呼叫ostimedly()後,一旦規定的時間期滿或者有其它的任務通過呼叫ostimedlyresume()取消了延時,它就會馬上進入就緒狀態,而不是執行狀態,也就是說延時結束後本任務不一定會被立刻執行。

2.uc/os中ostimedly與ostimedlyhmsm的區別

在uc/os-ii的系統中,規定,除了空閒任務之外的所有任務必須在任務中合適的位置呼叫系統提供的函式ostimedly();使當前任務的執行延時(暫停)一段時間並進行一次任務排程,以讓出cpu的使用權。(嵌入式實時作業系統uc/os-ii原理及應用(任哲))

uc/os-ii的時間管理是通過定時中斷來實現的,該定時中斷一般為10毫秒或100毫秒發生一次(這個時間片段是os的作者推薦的,大家可以參考邵貝貝翻譯的《嵌入式實時作業系統ucos-ii》這本書),時間頻率取決於使用者對硬體系統的定時器程式設計來實現。中斷發生的時間間隔是固定不變的,該中斷也成為乙個時鐘節拍。這裡隱含的意思就是你選擇的晶元如果想使用ucos系統,前提條件一定要有乙個timer。   

uc/os-ii要求使用者在定時中斷的服務程式中,呼叫系統提供的與時鐘節拍相關的系統函式,例如中斷級的任務切換函式,系統時間函式。

ucos時間管理的相關函式

1:任務延遲函式ostimedly()

ucos提供乙個可以被任務呼叫而將任務延時一段特定時間的功能函式,即ostimedly().任務呼叫ostimedly()後,一旦規定的時間期滿或者有其他的任務通過呼叫ostimedlyresume()取消了延時,他就會進入就緒狀態。只有當該任務在所有就緒態任務中具有最高的優先順序,它才會立即執行。

2:按時,分,秒延時函式ostimedlyhmsm()

與ostimedly()一樣,呼叫ostimedlyhmsm()函式也會是ucos進行一次任務排程,並且執行下乙個優先順序最高的就緒任務。當ostimedlyhmsm()後,一旦規定的時間期滿,或者有ostimedlyresume(),它就會馬上處於就緒態。同樣,只有當該任務在所有就緒態任務中具有最高的優先順序,他才開始執行。

3:恢復延時的任務ostimedlyresume()

延時的任務可以不等待延時的期滿,而是通過其他任務取消延時而使自己處於就緒態,可以通過該函式來實現,實際上,ostimedlyresume()也可以喚醒正在等待的事件。

4:系統時間ostimeget()和ostimeset()

Ucos II 任務延時函式

ucos ii 任務延時函式 編寫過微控制器程式的都知道,延時函式是經常被用到的。在ucos ii 裡,系統也提供了這樣的延時函式。乙個是大眾版的ostimedly 乙個是精緻版的ostimedlyhmsm 蘿蔔青菜,各有所愛,隨你怎麼選。這兩者的區別是,ostimedly 的延時時間是以節拍數來衡...

uC OSii之任務劃分

滿足以下幾個指標將會使軟體設計比較簡潔高效。裝置依賴性劃分 主要是對於一些輸入輸出裝置進行劃分,輸入輸出裝置分為主動型和被動性。主動型有乙個盡可能短的中斷服務程式和乙個與之關聯的任務組成 被動性任務由於不能主動觸發,必須有其他任務通過通訊機制向該裝置發出請求,啟用該裝置的相關任務。此類任務有鍵盤任務...

ucos 任務延時函式

在ucos裡,系統也提供了這樣的延時函式,乙個是大眾版本ostimedly 乙個是精緻版本的ostimedlyhmsm 隨你怎麼選擇 這兩者的區別就是,ostimedly的延時時間是以節拍數來衡量的額,ostimedlyhmsm的延遲時間則使以具體時間大小來很亮的。這兩個函式有著非常重要的作用,就是...