[ZLG-MCU] 使用SMALL RTOS的OSQPend时,总不正常,请大家指教

[复制链接]
3343|5
 楼主| xxt76 发表于 2011-1-19 20:11 | 显示全部楼层 |阅读模式
本帖最后由 xxt76 于 2011-1-19 21:28 编辑

这个问题困扰我好几天了。以下是我写的一个任务。在任务中,当我调用OSQPend函数时,返回值是OS_Q_OK没错,但它没把消息队列SerialData中的消息读出来写给qi。因此qi始终是0,肯请各位高手指点一二,不胜感激。

void TaskA(void)
{
uint8 data qi;
OSQCreate(SerialData,16);
while (1)
{
if(OSQPost(SerialData,0x16)==OS_Q_OK)
LED2=0;
  
if(OSQNMsgs(SerialData) ==1)
{
LED1=0;
delay(250);
  }
    P1 = 0xff;   
//------------上面的都正常,下面的qi结果总不对--------------
    if(OSQPend(&qi,SerialData,0)==OS_Q_OK)
  {
     LED0=0;
     if(qi==0x16)
         LED6=0;
   }
//--------------------------
}
......
}
foreverly 发表于 2011-1-20 11:53 | 显示全部楼层
我怎么没看明白呢?帮你呐喊助威吧。
FVJFIFE 发表于 2011-1-20 22:09 | 显示全部楼层
帮你顶起来
3B1105 发表于 2011-1-21 11:15 | 显示全部楼层
你用的是什么操作系统了
airwill 发表于 2011-1-22 12:22 | 显示全部楼层
我感觉楼主写的程序蛮规矩的,也没有想明白为什么
楼主可否找个调试器,跟踪看一看,SerialData 的变化情况,还有 OSQPend执行情况,因为你已经发送消息了,在这里 OSQPend 不会进入任务休眠状态,应该比较好跟踪的。
caijie 发表于 2011-1-22 16:14 | 显示全部楼层
SMALL RTOS
的OSQPend 函数本来就有这个BUG, 网上有解决方法,自己找。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

6

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部