求教ucos邮箱使用
在ucos系统下,建立了两个任务,还有一个中断(串口中断),其中一个任务的代码如下:for (;;)
{
OSTimeDly(200);
// OSMboxPost(UApacket_Mbox, (void *)Buf);
}
另一个任务代码如下:
for(;;)
{
cp = (uint8 *)OSMboxPend(UApacket_Mbox, 0, &err);
UART0Putch(*cp); //通过串口打印出cp的值
}
现在发现在第一个任务中使用OSMboxPost()发送消息,第二个任务能够顺利打印出串口信息。
但是,我把OSMboxPost()函数放入中断中,邮箱并怎么也收不到消息了。这是什么情况?经过调试,我敢肯定中断中肯定进去了,OSMboxPost()肯定执行过了,我就是不知道为什么邮箱收不到消息? OSMboxPost放中断的话,消息指针不要定义为局部变量,要定义为全局变量就可以了 谢谢各位,找到原因的,好像是编译器问题,把我的全局变量优化成局部变量了。
我在变量前加一个static或者volatile就ok了。。。
页:
[1]