码迷,mamicode.com
首页 > 其他好文 > 详细

OSMboxPend() 等待消息时遇到的问题

时间:2016-08-25 23:30:42      阅读:1394      评论:0      收藏:0      [点我收藏+]

标签:

首先根据书中讲解的实例代码(标准实例来源于UCOS ii经典教程 邵贝贝)

 1 OS_EVENT *CommMbox;
 2 
 3 void CommTask(void *pdata)
 4 {
 5      INT8U err;
 6      void *msg;
 7 
 8      pdata = pdata;  //防止编译器报错
 9 
10      for(;;)
11      {
12          msg = OSMboxPend(CommMbox, 10, &err)
13 
14          if(OS_ERR_NONE == err)
15          {
16                /***正确接受代码***/
17           }
18           else
19           {
20               /***在指定时间内没有接收到消息代码处理***/
21           }  
22         OSTimeDly(10);
23       }     
24 }

并且在另一个任务中进行消息发送,如下代码

 1 void PostMbox(void *pdata)
 2 {
 3     INT8U err;
 4 
 5     for(;;)
 6     {
 7 
 8        if(/*条件成立*/)
 9        {
10           err = OSMboxPost(CommMbox, &variable);
11           if(OS_ERR_NONE == err)
12           {
13              printf("post a message\r\n");
14           }          
15        }
16      OSTimeDly(10);
17     }
18 
19 }

无论是断点调试,还是从输出的调试信息中都可以确定每次都有消息发送,但是在OSMboxPend中始终没有接收到消息导致err一直等于OS_TIMEOUT而无法进行正确消息处理

但是只要有消息发送出来,通过调试断点可以看到void CommTask(void *pdata)中的*msg的值都是改变了的(并且是我们同过消息发出的值)。

21:18:14  2016-08-25

OSMboxPend() 等待消息时遇到的问题

标签:

原文地址:http://www.cnblogs.com/xiaohei007/p/5808413.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!