#define LED1_TASK_Prio 5

 

用到的UCOSII函數(shù)
消息郵箱創(chuàng)建函數(shù):
OS_EVENT *OSMboxCreate (void *msg)
請求消息郵箱函數(shù):
void *OSMboxPend (OS_EVENT *pevent, INT16U timeout, INT8U *err)
向郵箱發(fā)送消息函數(shù):
INT8U OSMboxPost (OS_EVENT *pevent, void *msg)//向等待任務(wù)表中高優(yōu)先級的任務(wù)發(fā)送消息
廣播郵箱消息函數(shù):
INT8U OSMboxPostOpt (OS_EVENT *pevent, void *msg, INT8U opt)//向等待任務(wù)表中所有任務(wù)發(fā)送消息

 

按鍵掃描任務(wù)中,如果KEY0被按下,那么將向消息郵箱Str_Box發(fā)送消息1,
i=1;
OSMboxPost(Str_Box,&i); //發(fā)送消息1
如果KEY1被按下,那么將發(fā)送消息2,
i=2;
OSMboxPost(Str_Box,&i); //發(fā)送消息2
如果KEY2(WK_UP)被按下,將向所有等待任務(wù)表中所有任務(wù)發(fā)送消息3,
i=3;
OSMboxPostOpt(Str_Box,&i,OS_POST_OPT_BROADCAST); //向所有任務(wù)廣播消息3

 

實(shí)驗(yàn)現(xiàn)象:

我們可以看到,如果我們按下KEY0,因?yàn)門askLed1的優(yōu)先級別高于TaskLed,所以當(dāng)兩個(gè)任務(wù)都在等待的時(shí)候,只有TaskLed1可以收到消息1,所以兩個(gè)LED都不反轉(zhuǎn)。
如果按下KEY1,那么TaskLed1收到消息2,狀態(tài)反轉(zhuǎn)。
如果按下KEY2,那么TaskLed1和TaskLed都會(huì)收到消息,這個(gè)時(shí)候兩個(gè)LED狀態(tài)都會(huì)反轉(zhuǎn)。

OSMboxPostOpt()OSMboxPost()的區(qū)別在于前者是廣播消息,所有等待任務(wù)都可以收到,后者只會(huì)高優(yōu)先級的任務(wù)收到。

下面給出消息郵箱的使用例程

[objc] view plain copy print?更多關(guān)于云服務(wù)器域名注冊,虛擬主機(jī)的問題,請?jiān)L問西部數(shù)碼官網(wǎng):www.bingfeng168.cn

贊(0)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡(luò)內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-62778877-8306;郵箱:fanjiao@west.cn。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明出處:西部數(shù)碼知識庫 » Ucosii消息郵箱使用

登錄

找回密碼

注冊