现在有一个线程用队列来获取别的线程送过来的数据并进行处理,数据传递用消息队列,这样也能起到一个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的方式传递数据吗?我在发送线程里把整个数据,而不是指针,送到队列。这样虽然占内存或需要复制时间,但是对于我这个小型应用来说,可以接收。
但是发现队列取出的数据不对,是什么原因?
如何用消息队列传传结构体实体,而不是指针?