OpenEdv-开源电子网

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

ucosⅢ的消息队列

[复制链接]

3

主题

6

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2016-5-4
在线时间
6 小时
发表于 2016-6-2 12:55:06 | 显示全部楼层 |阅读模式
1金钱
各位原子哥  你们好  我设置了一个消息长度为10的消息队列  在进行一发一收的情况下能够正常工作  然而多次发送消息后接收到的消息就变成0了部分示例代码:
OS_Q KEYQ;
u8  keym;


OSQCreate ((OS_Q*                )&KEYQ,       
                (CPU_CHAR*        )"key",       
                (OS_MSG_QTY        )10,       
                (OS_ERR*        )&err);       


void task1_task(void *p_arg)
{
        u8 *key;
        OS_ERR err;
        OS_MSG_SIZE size;
        while(1)
        {       
                key = (u8 *)OSQPend(&KEYQ,0,OS_OPT_PEND_BLOCKING,&size,0,&err);
                printf("½óêÕ½á1û\terr:%d\t½óêÕ:%d\r\n\n\n",err,*key);
                OSTimeDlyHMSM(0,0,1,1,OS_OPT_TIME_PERIODIC,&err);   //Ñóê±10ms
        }
}

void task2_task(void *p_arg)
{
       
        OS_ERR err;
        while(1)
        {
                ledy=~ledy;
                keym=key_Scan(0);
                if(keym)
                {
                        OSQPost(&KEYQ,(void*)&keym,1,OS_OPT_POST_FIFO,&err);
                        printf("·¢Ëí½á1û£o\terr%d\t·¢Ëí:%d\r\n",err,keym);       
                }
                OSTimeDlyHMSM(0,0,0,10,OS_OPT_TIME_PERIODIC,&err);   //Ñóê±10ms
        }
}

问题描述:
1,一发一收  可以正常工作

一发一收 可以正常工作

一发一收  可以正常工作

2连续按键就会出现0
2S)DS5@)5[VFL9)NWRA@_]P.png
还请原子哥解惑哦   谢谢

最佳答案

查看完整内容[请看2#楼]

消息队列只传数据地址,并不传值,当你pend的时候,地址所指的数据是啥玩意,你接收到的就是啥玩意
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

70

主题

6698

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12699
金钱
12699
注册时间
2012-11-26
在线时间
3714 小时
发表于 2016-6-2 12:55:07 | 显示全部楼层
消息队列只传数据地址,并不传值,当你pend的时候,地址所指的数据是啥玩意,你接收到的就是啥玩意
学无止境
回复

使用道具 举报

70

主题

6698

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12699
金钱
12699
注册时间
2012-11-26
在线时间
3714 小时
发表于 2016-6-2 13:14:01 | 显示全部楼层
注意  !!!  你发送的是key,后面你key放开了,key为0,接收到的是此时的key,而不是之前的key,所以key为0,你接收到的就为0         
回复

使用道具 举报

3

主题

6

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2016-5-4
在线时间
6 小时
 楼主| 发表于 2016-6-2 18:26:44 | 显示全部楼层
jermy_z 发表于 2016-6-2 13:14
注意  !!!  你发送的是key,后面你key放开了,key为0,接收到的是此时的key,而不是之前的key,所以key ...

懂了  谢谢
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-27 12:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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