初级会员

- 积分
- 96
- 金钱
- 96
- 注册时间
- 2012-1-13
- 在线时间
- 0 小时
|
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
这我想不懂,请大家指教一下!!!! |
|