coos中,任務有四種狀態,分別是:就緒態、執行態、等待態、休眠態。
為什麼要分不同的狀態?
目的就為了把cpu讓給更有需要的任務,比如,你開啟乙個瀏覽器,又開啟乙個遊戲(需要全屏),這樣在你玩遊戲的時候,就讓瀏覽器這個任務掛起,以進入等待狀態。
然後整個cpu都在為遊戲服務,而不會出現卡頓現象。
同樣的原理,也能運用在微控制器當中。
1、cogetcurtaskid(),獲得任務id號
os_tid cogetcurtaskid(void);
這個函式,只能用在任務內部,獲得任務id號之後,就可以讓任務進入不同的狀態了。
成功獲得id號的話,返回os_tid變數。
2、cosuspendtask(),掛起任務
statustype cosuspendtask(os_tid taskid);
3、coawaketask(),喚醒任務
statustype coawaketask(os_tid taskid);
任務a掛起之後,它自己不能進入就緒態的,必須等其它任務喚醒它。
CoOS使用教程 事件標誌
coos提供了乙個事件標誌的機制,用起來跟訊號量差不多。1 cocreateflag 建立乙個事件標誌 os flagid cocreateflag bool bautoreset,bool binitialstate bautoreset,為0表示手動復位,為1表示自動復位。binitialsta...
CoOS使用教程 訊息郵箱
訊息郵箱是一種任務間通訊的機制,用起來跟qq 163的郵箱差不多。但是coos下的訊息郵箱只能存放一條訊息,是臨界資源,所以我這裡用了互斥量,以免出錯。最終效果如下圖所示 1 cocreatembox 建立乙個訊息郵箱。os eventid cocreatembox u8 sorttype sort...
UCOSIII的任務狀態
1 休眠態 任務已經在cpu的flash中了,但是還沒有交給ucosiii管理。2 就緒態 系統為任務分配了任務控制塊,並且任務已經在就緒表中登記,這時這個任務就具有了執行的條件,此時任務的狀態就是就緒態。3 執行態 任務獲得cpu的使用權,正在執行。任何時刻只能有乙個任務處於執行態。4 等待態 正...