您的位置:首页 > 其它

FreeRTOS 队列例程Demo

2015-11-09 15:23 232 查看
//说明:通过队列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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: