首页 热点资讯 义务教育 高等教育 出国留学 考研考公

freertos怎么知道队列消息的有效长度

发布网友

我来回答

1个回答

热心网友

一个使用结构体例子:
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 );  
    }  
         //... 任务其余代码.  
 }

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com