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

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版