求教ucos邮箱使用

[复制链接]
2703|2
 楼主| 南宫云明 发表于 2012-11-29 16:31 | 显示全部楼层 |阅读模式
在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了。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

272

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部