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
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
相关文章推荐
- Java 工厂模式
- BIEE 创建一个简单的分析(2)
- fastqc, Per Base Sequence Content
- 成大事者必备的九种能力、九种手段、九种心态
- Ubuntu Linux软件
- php内存管理
- eclipse 误删文件的恢复,代码的恢复
- 开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别
- 静态无功补偿与动态无功补偿的区别(转载)
- RPD资料库创建(1)
- IDE 文件查找快捷键被占
- list view优化
- shiro认证
- 文本处理命令系列――grep的扩展用法
- 求助ng-click 事件里面如何捕获节点问题
- 无功补偿装置三种投切方式(转载)
- 网页编辑
- Linux与JVM的内存关系分析
- Python SocketServer.py
- xorplus.ct简介