南宫云明 发表于 2012-11-29 16:31

求教ucos邮箱使用

在ucos系统下,建立了两个任务,还有一个中断(串口中断),其中一个任务的代码如下:

for (;;)
{
   OSTimeDly(200);
//   OSMboxPost(UApacket_Mbox, (void *)Buf);
}
另一个任务代码如下:
for(;;)
{
cp = (uint8 *)OSMboxPend(UApacket_Mbox, 0, &err);
UART0Putch(*cp); //通过串口打印出cp的值
}

现在发现在第一个任务中使用OSMboxPost()发送消息,第二个任务能够顺利打印出串口信息。

但是,我把OSMboxPost()函数放入中断中,邮箱并怎么也收不到消息了。这是什么情况?经过调试,我敢肯定中断中肯定进去了,OSMboxPost()肯定执行过了,我就是不知道为什么邮箱收不到消息?

llf021421 发表于 2012-12-2 01:52

OSMboxPost放中断的话,消息指针不要定义为局部变量,要定义为全局变量就可以了

南宫云明 发表于 2012-12-3 09:09

谢谢各位,找到原因的,好像是编译器问题,把我的全局变量优化成局部变量了。

我在变量前加一个static或者volatile就ok了。。。
页: [1]
查看完整版本: 求教ucos邮箱使用