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中我就不知道怎么把这三个数进行分离了,原子哥,跪求你的答复啊,
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
发送消息方发送的是消息的指针,引用没有值传递,不会发生内存拷贝
消息接收方OSTaskQPend返回值就是消息的指针(如果正确的话,NULL指针要判断err),
至于怎么根据指针读取数值不说了
我也是初学,昨天刚看到,不知道对不对
至于处理p,只要p[0],p[1].....不是一样的吗?前提是你发过来的地址是对的。
这样怎么还能释放。没明白你代码本来想做什么,看起来是想申请,然后初始化,传递过去处理,处理完释放,但是有突然弄了另一个pbuf进来。
你想清楚你到底要实现什么再说吧
一周热门 更多>