FreeRTOS 队列例程Demo

//说明:通过队列API传输一个结构体数据

typedef struct AdData_STRUCT

{
     unsigned int xVal;
     unsigned int yVal;
     unsigned int zVal;
}AdData;

#define ADVAL_QUEUE_LEN      10 
QueueHandle_t AdValQueue; 


//task0  添加结构体数据到队列中去
void ADTask(void const * agrv)
{
     AdData AdVal;
     //创建一个队列
     AdValQueue = xQueueCreate( ADVAL_QUEUE_LEN, sizeof(struct AdData_STRUCT * ));
     if( AdValQueue == 0 )
     {
         // Queue was not created and must not be used.
         //创建队列失败
     }
     for(;;)
     {
          struct AdData_STRUCT *pTmp;  
         
          AdVal.xVal = 0;
          AdVal.yVal = 1;
          AdVal.zVal = 2;

          pTmp=&AdVal;//传递地址
           
          xQueueSend( AdValQueue, (void*)&pTmp, ( TickType_t ) 0);
           
         osDelay(1000);
       }
}
//task1 接收一个结构体中的数据
void StartDefaultTask(void const * argument)
{
       for(;;)
       {
          struct AdData_STRUCT *pTmp;

          if( AdValQueue != 0 )
          {
               // Receive a message on the created queue.  Block for 10 ticks if a
               // message is not immediately available.
               if( xQueueReceive( AdValQueue, &pTmp, ( TickType_t )10 ))
               {
                    printf("%u %u %u\r\n",pTmp->xVal,pTmp->yVal,pTmp->zVal);
               }
          }
          osDelay(1000);
       }
     }
}

参考:FreeRTOS中的Queue.h的Demo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值