嵌入式学习小组
直播中

韩俊

7年用户 183经验值
私信 关注

请问如何用队列传结构体实体,而非指针传递?

现在有一个线程用队列来获取别的线程送过来的数据并进行处理,数据传递用消息队列,这样也能起到一个buffer 的作用。数据量不大,也就20个字节的样子,定了一个队列元素结构如下
struct
{
uint32_t length;
uint8_t data[16];
}qDataType;
在接收线程中,
xQueueReceive(HostUpStreamHandle,&qOut,osWaitForever);
发送线程中,发送函数这样定义,另一个线程也一样
void Send1()
{
qDataType d1;
for(;;)
  {
     /*d1赋值代码,省略*/
     xQueueSend(HostUpStreamHandle,&qIn2,osWaitForever);
  }
}
因为FreeRTOS不是用COPY的方式传递数据吗?我在发送线程里把整个数据,而不是指针,送到队列。这样虽然占内存或需要复制时间,但是对于我这个小型应用来说,可以接收。
但是发现队列取出的数据不对,是什么原因?
如何用消息队列传传结构体实体,而不是指针?

回帖(1)

李丕海

2020-6-17 10:03:47
会用联体合的人.C语言掌握得基本差不多了.
举报

更多回帖

发帖
×
20
完善资料,
赚取积分