OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 12100|回复: 2

ucos-ii 消息队列问题

[复制链接]

6

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2012-1-13
在线时间
0 小时
发表于 2012-5-4 22:02:53 | 显示全部楼层 |阅读模式
OS_EVENT *que;          //消息队列 的声明
void *myq[message];     //消息缓冲区message=10

//按键扫描的任务 
void Taskkey(void *pdata)
{
 u8 key;
 INT8U *s="ucos-ii",i;
 while(1)
  {
    key=KEY_Scan();
    f(key==3)             
    {
     for(i=5;i<message;i++)      //一次按键就发送5个消息
        {
         OSQPostFront (que,&i);   //队列发送消息   后进先出!!
         printf("消息队列发送消息%d\n",i);
        }
    }
   OSTimeDly(50);
  }
}

//接收消息队列 的任务
void TaskLed(void *pdata)
{
 INT8U      err;
 INT8U    *s;
 while(1)
 {
   s=(INT8U*)OSQPend(que,0,&err);   //请求等到消息队列
   LED0=!LED0;
   printf("收到的消息s=%d\n",*s);
   OSTimeDlyHMSM(0,0,0,500);
 }
}

而最后下载到板子上运行通过串口打印是这样的:
消息队列发送消息5
消息队列发送消息6
消息队列发送消息7
消息队列发送消息8
消息队列发送消息9
收到的消息s=10
收到的消息s=10
收到的消息s=10
收到的消息s=10
收到的消息s=10

我不明白为什么收到的消息都是10  不应该是9-5吗??


当这段改为
    f(key==3)             
    {
     for(i=0;i<5;i++)      //一次按键就发送5个消息
        {
         OSQPostFront (que,&i);   //队列发送消息   后进先出!!
         printf("消息队列发送消息%d\n",i);
        }
    }
而最后下载到板子上运行通过串口打印是这样的:
消息队列发送消息0
消息队列发送消息1
消息队列发送消息2
消息队列发送消息3
消息队列发送消息4
收到的消息s=5
收到的消息s=5
收到的消息s=5
收到的消息s=5
收到的消息s=5

这我想不懂,请大家指教一下!!!!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-5-4 22:16:25 | 显示全部楼层
OSQPostFront ,发送的是数据的首地址,而不是数据.
你发送5次都是i的地址.那么打印出来的自然都是最后 i的值了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 1 反对 0

使用道具 举报

6

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2012-1-13
在线时间
0 小时
 楼主| 发表于 2012-5-4 22:31:07 | 显示全部楼层
回复【2楼】正点原子:
OSQPostFront ,发送的是数据的首地址,而不是数据. 你发送5次都是i的地址.那么打印出来的自然都是最后 i的值了.
---------------------------------
谢谢原子!!!明白了.....原来还是对指针不是很了解!!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 20:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表