OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2784|回复: 0

FreeRTOS: 消息队列使用笔记

[复制链接]

44

主题

187

帖子

0

精华

高级会员

Rank: 4

积分
566
金钱
566
注册时间
2016-9-28
在线时间
158 小时
发表于 2018-8-31 07:06:44 | 显示全部楼层 |阅读模式
1. 声明变量
satic uint8_t ucVar[5] = {0};
QueueHandle_t xQueue;


2. 创建消息队列, 消息个数为:1
static void AppTask_xQueueObject (void)
{
    xQueue = xQueueCreate(1, sizeof(uint8_t));
    if( xQueue != NULL )
    {
        printf(" Create xQueue: sucess \r\n");
    }        
}


3. 创建两个Task,一个用于发送消息,一个用于监听消息
void vTask1( void *pvParameters )
{
    uint8_t ucRecieve = 0;
    while(1)
    {
        if( xQueue != NULL )
        {
            xQueueReceive( xQueue, &ucRecieve, portMAX_DELAY);
            if( ucRecieve == 1 )   //判断是否收到响应消息
            {
                 printf(" Task2 is running, ucRecieve = %d\r\n", ucRecieve);
            }
        }
    }
}

void vTask2( void *pvParameters )
{
    portTickType xLastWakeTime;
    const portTickType xFrequency = 100;

    ucVar[0] = 1;
    /* 获取系统当前时间 */
    xLastWakeTime = xTaskGetTickCount();
    while(1)
    {
        vTaskDelayUntil( &xLastWakeTime, xFrequency );
        xQueueSend( xQueue, ( void * ) &ucVar[0], ( portTickType ) 10 );
    }
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 14:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表