itloverhpu

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

问题提出?

定义两个任务,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得到运行*/
}
}

posted on 2013-07-28 17:09  itloverhpu  阅读(405)  评论(0编辑  收藏  举报