打印

求教ucos邮箱使用

[复制链接]
2027|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

粉丝