问题提出?
定义两个任务,task1,task2,想task1用OSMboxPost,task2用OSMboxPend
定义了一个邮箱
Mbox1=OSMboxCreate(括号里面应该怎么写?)
还有具体的task1和task2应该怎么写啊?
本意是想task2发送“HOW ARE YOU”,然后task2收到这个消息,从邮箱里面提取出来显示在屏幕上!
解答:
首先设:task1任务的优先级为10,task2任务的优先级为15
OSMboxCreat(void *msg)函数的参数可以为空即Mbox1=OSMboxCreat((void*)0)
表示在刚建立的消息邮箱为空,也可以不为空即msg为指向消息的指针。
同时再建立另一个邮箱Mbox2=OSMboxCreat((void*)0)
task1(void *pdata)
{
static INT8U RxBuf={how are you}; /*定义数组指针,存放消息*/
INT8U err;
INT8U x;
pdata = pdata; /*防止编译错误*/
x = 0;
for(;;)
{
OSMboxPost(Mbox1,(void*)&RxBuf[x]); /*发消息给task2*/
OSMboxPend(Mbox2,0,&err); /*挂起,等待task2回答*/
x++;
if (Rxbuf[x] == 'u') x = 0;
}
}
task2(void *pdata)
{
INT8U err;
INT8U *msg;
pdata = pdata;
for(;;)
{
msg = (INT8U*)OSMboxPend(Mbox1,10,&err);/*接手消息*/
printf("%c",*msg);
OSTimeDlyHMSM(0,0,1,0);/*延时一秒,任务切换,但task1不能运行*/
OSMboxPost(Mbox2,(void*)1);
/*发送一条非空消息给Mbox2,task1得到运行*/
}
}