//说明:通过队列API传输一个结构体数据
typedef struct AdData_STRUCT
{
unsigned int xVal;
unsigned int yVal;
unsigned int zVal;
}AdData;
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
typedef struct AdData_STRUCT
{
unsigned int xVal;
unsigned int yVal;
unsigned int zVal;
}AdData;
#define ADVAL_QUEUE_LEN 10
QueueHandle_t AdValQueue;
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.
//创建队列失败
{
// 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);
}
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;
{
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