完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近刚学Freertos, 看到可以获取Freertos队列长度,但是队列项里的字节长度是否可以获取?
因为项目中队列中会存放不定长字节,需要对队列中的数据分拣,每次分拣的时候遍历所有队列项长度,有点浪费,请教了 |
|
相关推荐
1个回答
|
|
FreeRTOS队列是一种用于在任务之间传递消息或数据的机制。队列本身可以提供队列的长度,即队列中有多少个元素。然而,FreeRTOS队列本身并不直接提供每个队列项的字节长度。
要获取每个队列项的字节长度,您需要在设计队列项结构时考虑这一点。一种常见的方法是在队列项中包含一个表示数据长度的字段。这样,当您从队列中读取数据时,可以同时获取数据的长度,而无需遍历所有队列项。 以下是一个简单的示例,展示了如何在队列项中包含数据长度字段: ```c typedef struct { uint8_t *data; // 指向数据的指针 size_t length; // 数据的长度 } QueueItem_t; ``` 在发送数据到队列时,您需要同时发送数据指针和数据长度: ```c void sendDataToQueue(QueueHandle_t xQueue, uint8_t *data, size_t length) { QueueItem_t item; item.data = data; item.length = length; xQueueSend(xQueue, &item, 0); } ``` 在接收数据时,您可以获取数据指针和长度: ```c void receiveDataFromQueue(QueueHandle_t xQueue, uint8_t **data, size_t *length) { QueueItem_t item; if (xQueueReceive(xQueue, &item, portMAX_DELAY) == pdTRUE) { *data = item.data; *length = item.length; } } ``` 通过这种方式,您可以在接收队列项时直接获取每个队列项的字节长度,而无需遍历所有队列项。这将提高效率并减少不必要的操作。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1683 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1582 浏览 1 评论
1013 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
703 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1627 浏览 2 评论
1892浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
675浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
538浏览 3评论
558浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
526浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 03:07 , Processed in 1.009805 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号