訊息郵箱是一種任務間通訊的機制,用起來跟qq、163的郵箱差不多。
但是coos下的訊息郵箱只能存放一條訊息,是臨界資源,所以我這裡用了互斥量,以免出錯。
最終效果如下圖所示:
1、cocreatembox(),建立乙個訊息郵箱。
os_eventid cocreatembox(u8 sorttype);
sorttype是在多工中,使用多個訊息郵箱時候,核心需要對個訊息郵箱進行排序,設為event_sort_type_fifo,就是先來先服務;設為event_sort_type_prio,就是按照優先順序服務。
2、copendmail(),接收郵箱裡的訊息。
void* copendmail(os_eventid id,u32 timeout,statustype* perr);
timeout,等待訊息的時限。
perr,返回的錯誤資訊。因為c語言的函式無法返回多個變數,所以這裡用了指標返回錯誤資訊。
3、copostmail()
,傳送訊息到郵箱裡面。
statustype copostmail(os_eventid id,void* pmail);
pmail,就是訊息的指標,這裡直接使用字串就可以了。
CoOS使用教程 事件標誌
coos提供了乙個事件標誌的機制,用起來跟訊號量差不多。1 cocreateflag 建立乙個事件標誌 os flagid cocreateflag bool bautoreset,bool binitialstate bautoreset,為0表示手動復位,為1表示自動復位。binitialsta...
CoOS使用教程 任務的狀態
coos中,任務有四種狀態,分別是 就緒態 執行態 等待態 休眠態。為什麼要分不同的狀態?目的就為了把cpu讓給更有需要的任務,比如,你開啟乙個瀏覽器,又開啟乙個遊戲 需要全屏 這樣在你玩遊戲的時候,就讓瀏覽器這個任務掛起,以進入等待狀態。然後整個cpu都在為遊戲服務,而不會出現卡頓現象。同樣的原理...
Ucosii訊息郵箱使用
設定任務優先順序 define led task prio 6 define led1 task prio 5 用到的ucosii函式 訊息郵箱建立函式 os event osmboxcreate void msg 請求訊息郵箱函式 void osmboxpend os event pevent,i...