关于UCOSIII的消息队列问题

2019-07-20 19:39发布

                           pbuf1 = mymalloc(SRAMIN,12);        //申请12个字节
                          pbuf[0]=pitch;
                          pbuf[1]=roll;
                          pbuf[2]=yaw;
                          pbuf1=pbuf;
                          OSTaskQPost((OS_TCB*        )&Task3_TaskTCB,        //向任务task3发送消息
                          (void*                )pbuf1,
                          (OS_MSG_SIZE)12,
                          (OS_OPT                )OS_OPT_POST_FIFO,
                                              (OS_ERR*        )&err);
这句中pitch,yaw,roll;是三个角度,然后我想把它发送到TASK3去进行处理,这样可以吗;
还有  u8 *p;
        OS_MSG_SIZE size;
    OS_ERR err;
        CPU_SR_ALLOC();
        p_arg = p_arg;
         
        while(1)
        {
                //请求消息
                p=OSTaskQPend((OS_TICK                )0,
                      (OS_OPT                )OS_OPT_PEND_BLOCKING,
                      (OS_MSG_SIZE*        )&size,
                      (CPU_TS*                )0,
                      (OS_ERR*      )&err );
                LCD_ShowString(40,350,100,16,16,p);
                myfree(SRAMIN,p);        //释放内存
                OSTimeDlyHMSM(0,0,0,20,OS_OPT_TIME_PERIODIC,&err); //延时1s
        }        在任务3中我就不知道怎么把这三个数进行分离了,原子哥,跪求你的答复啊,
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
ysq7120
2019-07-21 11:29
pbuf1 你这个是动态申请的,而pbuf是一个数组吧。你申请后,将 pbuf1=pbuf。然后post。那么传递过去的是pbuf的地址,而不是申请的地址。
这样怎么还能释放。没明白你代码本来想做什么,看起来是想申请,然后初始化,传递过去处理,处理完释放,但是有突然弄了另一个pbuf进来。
你想清楚你到底要实现什么再说吧

一周热门 更多>