用FreeRTOS,使用队列怎么发送一个结构体

 我来答
zhzht_2008
2016-10-19 · TA获得超过2112个赞
知道小有建树答主
回答量:522
采纳率:100%
帮助的人:245万
展开全部

一个使用结构体例子:

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 );  
    }  
         //... 任务其余代码.  
 }
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式