你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Freertos 队列项字节长度问题

[复制链接]
anka120 提问时间:2018-5-27 09:57 /
最近刚学Freertos, 看到可以获取Freertos队列长度,但是队列项里的字节长度是否可以获取?

因为项目中队列中会存放不定长字节,需要对队列中的数据分拣,每次分拣的时候遍历所有队列项长度,有点浪费,请教了
收藏 评论2 发布时间:2018-5-27 09:57

举报

2个回答
feixiang20 回答时间:2018-5-28 03:15:45
本帖最后由 feixiang20 于 2018-5-28 03:16 编辑

所读取的数据长度是创建队列的时候所设定的每个队列项目的长度
一个使用结构体例子:

struct AMessage  
{  
      portCHAR ucMessageID;  
      portCHAR ucData[ 20 ];  
}xMessage;  
unsigned portLONG ulVar = 10UL;  
void vATask( voidvoid *pvParameters )  
{  
     xQueueHandle xQueue1, xQueue2;  
     struct AMessage *pxMessage;  
     /*创建一个队列,队列能包含10个unsigned long类型的值。*/  
     xQueue1 = xQueueCreate( 10, sizeof( unsigned portLONG ) );  
     /* 创建一个队列,队列能包含10个 Amessage结构体指针类型的值。
       这样可以通过传递指针变量来包含大量数据。*/  
     xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );  
     // ...  
     if( xQueue1 != 0 )  
     {  
          /*1个unsigned long型数据入队.如果需要等待队列空间变的有效,
         会最多等待10个系统节拍周期*/  
          if( xQueueSend( xQueue1, ( voidvoid * ) &ulVar, ( portTickType ) 10 ) !=pdPASS )  
          {  
               /*消息入队失败*/  
          }  
    }  
    if( xQueue2 != 0 )  
    {  
         /* 发送一个指向结构体Amessage的对象,如果队列满也不等待 */  
         pxMessage = & xMessage;  
         xQueueSend( xQueue2, ( voidvoid * ) &pxMessage, ( portTickType ) 0 );  
    }  
         //... 任务其余代码.  
}

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

anka120 回答时间:2018-5-28 15:14:33
feixiang20 发表于 2018-5-28 03:15
所读取的数据长度是创建队列的时候所设定的每个队列项目的长度
一个使用结构体例子:

谢谢,
这是,在队列里发送结构体示例吧

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版