μC/OS-ii的任務與通信

μC/OS-ii使用信號量、事件標誌組、郵箱和消息隊列這些中間環節來顯現任務之間的通信,這些中間環節統一被稱爲事件。

1.計數信號量

給共享資源設立一個標誌,表示共享資源的佔用情況,使用共享資源前,對這個標誌進行查詢,再決定自己的行爲,函數主體在os_sem.c中
相關函數:

1.1 函數OSSemCreat

table 1. 函數OSSemCreat

函數名 OSSemCreat
函數原形 OS_EVENT *OSSemCreat(INTU16 cnt);
功能描述 創建信號量
輸入參數 cnt:信號量的初始值,一般爲0,可以取0到65535之間的任何值
輸出參數
返回值 新建信號量的指針
先決條件
被調用函數

1.2 函數OSSemPost

table 2. 函數OSSemPost

函數名 OSSemPost
函數原形 INT8U OSSemPost(OS_EVENT *pevent));
功能描述 發送信號量,信號量的值加1
輸入參數 pevent:所發送信號量的指針
輸出參數
返回值 OS_NO_EVENT:發送成功;
OS_ERR_EVENT_TYPE:pevent不是信號量類型;
OS_SEM_OVF:信號量的值溢出;
先決條件
被調用函數

1.3 函數OSSemPend

table 3. 函數OSSemPend

函數名 OSSemPost
函數原形 INT8U OSSemPost(OS_EVENT *pevent,INT16U timeout,INT8U *err);
功能描述 等待(接收)信號量,信號量的值減1
輸入參數1 pevent:所發送信號量的指針
輸入參數2 timeout:等待信號量的最長時間,以時鐘節拍爲單位
輸入參數3 err:函數執行效果的變量地址。
OS_NO_ERR :信號量不爲零。
OS_TIMEOUT :信號量沒有在指定數目的時鐘週期內被設置。
OS_ERR_PEND_ISR :從中斷調用該函數。雖然規定了不允許從中斷調用該函數,但μC/OS-Ⅱ仍然包含了檢測這種情況的功能。
OS_ERR_EVENT_TYPE :pevent 不是指向信號量的指針。
輸出參數
先決條件
被調用函數

2.事件標誌組

2.1 函數OSFlagCreat

table 4. 函數OSFlagCreat

函數名 OSFlagCreat
函數原形 OS_FLAG_GRP * OSFlagCreat(OS_FLAGS flags,INT8U *err);
功能描述 創建事件標誌組
輸入參數1 flags標誌組中各標誌的初始值:
輸入參數2 err:函數執行效果的變量地址
輸出參數
先決條件
被調用函數

2.2 函數OSFlagPost

2.3 函數OSFlagPend

3 消息郵箱

一個郵箱只能傳送一個消息的地址

3.1 函數OSMboxCreat

3.2 函數OSMboxPost

3.3 函數OSMboxPostOpt

3.4 函數OSMboxPend

4.消息隊列

消息隊列可以存放多個消息,用一個指針數組構建消息隊列,消息本身不參加排隊,而是用指向不同消息的指針進行排隊。

4.1 函數OSQCreat

4.2函數OSQPost

4.3 函數OSQPend

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章