CoOS使用教程 訊息郵箱

2021-07-09 03:06:45 字數 829 閱讀 8950

訊息郵箱是一種任務間通訊的機制,用起來跟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...