cafppla1 发表于 2013-2-13 12:36:25

关于ucos邮箱使用出错问题

void Task1(void *pdata)
{
pdata = pdata;
int i=0;
OS_EVENT *Mbox;
   GUI_SetColor(GUI_RED);//ÉèÖÃ×ÖÌåÑÕÉ«
GUI_SetFont(&GUI_FontComic24B_ASCII);
Mbox=OSMboxCreate((void *)0);
for (;;)
{
    GUI_DispDecAt(i,60,110,3);
//OSTaskSuspend(OS_PRIO_SELF);                      //
    OSTimeDly(400);
    i++;
   
    OSMboxPost(Mbox,(void *)&i);
}
}
void Task2(void *pdata)
{
pdata = pdata;
OS_EVENT *Mbox;
INT8U err;
INT8U m;
for (;;)
{
UTX_PROC("0xaa");
   m=*(INT8U *)OSMboxPend(Mbox,0,&err);
   UCA1TXBUF=m;
    OSTimeDly(400);
}
}

以上是用msp430f5438移植的ucos工程中的2个任务,在使用邮箱时程序不断重启,有以下几个问题:
1,邮箱定义指针OS_EVENT *Mbox;这句,为什么每个任务里都要,少一个都编译不过,在程序最前面定义了也是一样,任务里定义一个都不能少;
2,m=*(INT8U *)OSMboxPend(Mbox,0,&err);这句屏蔽后程序不重启,串口发送任务正常(除m值)
程序不断重启是为何?邮箱应怎样正确使用?

cafppla1 发表于 2013-2-13 12:39:10

附上工程

i55x 发表于 2013-2-13 14:35:25

OS_EVENT *Mbox 必须是全局变量!

cafppla1 发表于 2013-2-13 14:55:10

i55x 发表于 2013-2-13 14:35 static/image/common/back.gif
OS_EVENT *Mbox 必须是全局变量!

在最前面定义全局变量他就报任务中的mbox未定义…

i55x 发表于 2013-2-13 15:02:36

cafppla1 发表于 2013-2-13 14:55 static/image/common/back.gif
在最前面定义全局变量他就报任务中的mbox未定义…

不可能,肯定其他地方出错了。
页: [1]
查看完整版本: 关于ucos邮箱使用出错问题