信号量接收不对

andylao62 2010-08-28 06:06:58
功能描述:根据按键键值,发送不同的消息值
问题:任务消息接收得到的值不对
发送
void sendmsg(void)
{ U32 keyid=0;
U8 err;
keyid=keycode;//keycode这个值是对的
err=OSQPost(keyMsgQId,(void *)&keyid);


if(err!=0)
{
keyMsgQId = OSQDel(keyMsgQId, OS_DEL_NO_PEND, &err);
keyMsgQId = OSQCreate(&keyMsgQIdTbl[0],100);
}
}


接收
void KEY_PRO (void *data)
{

//U8 err;
U8 return_code = OS_NO_ERR;
U32 *keymsg;
keymsg = (U32 *)OSQPend(keyMsgQId, WAIT_FOREVER, &return_code);

...
...
}
但接受到的消息值一直是*keymsg =0xF0
不知道怎么回事,大家帮我看看,哪里定义错了
用的是UCOS平台
...全文
141 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
andylao62 2010-08-28
  • 打赏
  • 举报
回复
楼上的高手呀,这么改后的确会得到真正的消息值,为什么这里要这么定义呢?
guetcw 2010-08-28
  • 打赏
  • 举报
回复
这样看看
U32 static keyid;


if(err!=0)
{
keyMsgQId = OSQDel(keyMsgQId, OS_DEL_NO_PEND, &err);
keyMsgQId = OSQCreate(&keyMsgQIdTbl[0],100);
}
这里就不必要了,信号量在初始化的时候建

27,374

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧