FreeRTOS事件组

一.事件组是什么?

事件类似与信号量,可以等待某一个事件的发生,但是也可以等待某几件事情的发生。这个就比较重要了。列如,在环境监测中,温度达到30°以上同时湿度百分之50以上,就报警。在这种情况下信号量就不太适应了。这时候可以使用事件。

二.如何使用事件组

首先我们可以看到FreeRTOSConfig.h中

复制代码
#define configUSE_16_BIT_TICKS 1

如果定义为1,EventBits_t就是16位,最多只能存储8个不同事件,为0的话,EventBits_t就是32位可以存储24个不同的事件。

当我们使用的时候,一个任务中可以令EventBits某一位置1,其他一个任务中可以一直阻塞等待EventBits_t的这一位置1.这样就完成了信号量的功能。我们也可以任务1发生,第一位置1,任务二发生,第二位置1,任务三一直阻塞等待第一位和第二位都为1.这样就完成事件专属的特性。

三.事件代码层

cpp 复制代码
static EventGroupHandle_t Event_Handle=NULL;
//创建Event_Handle
Event_Handle=xEventGroupCreate();

static void task1(void * parameter)
{

 while(1)
  {
     /*

       */
    // 低一位置1   
   xEventGroupSetBits(Event_Handle,1<<0); 
   
  }


}
static void task2(void * parameter)
{

 while(1)
  {
     /*

       */
    // 低二位置1   
   xEventGroupSetBits(Event_Handle,1<<1); 
   
  }


}
static void task3(void * parameter)
{

 while(1)
  {  
       //等待阻塞
     xEventGroupWaitBits(Event_Handle,
                         (1<<0|1<<1), //感兴趣的位
                          pdTRUE,       //退出时清0
                          pdTRUE,       //满足感兴趣的所有事件          
                          portMAX_DELAY);//一直等待
   
  }


}
相关推荐
ACP广源盛1392462567318 分钟前
GSV1015@ACP#1015/2015产品规格详解及产品应用分享
单片机·嵌入式硬件·音视频
三品吉他手会点灯31 分钟前
STM32F103学习笔记-19-SysTick-系统定时器(第1节)-功能框图讲解和优先级配置
笔记·stm32·单片机·嵌入式硬件·学习
风哥在风中36 分钟前
与防静电腕带完全不同性质:电烙铁必须硬接地,而且良好接地
单片机·嵌入式硬件·智能硬件·esd防护·iot硬件
huangql52038 分钟前
流媒体与物联网实战:车载监控系统完整指南
物联网
时空自由民.1 小时前
stm32FXX系列MCU汇编启动文件分析
汇编·stm32·单片机
星瞰物联2 小时前
融合北斗与天通卫星通信技术的堤坝水文监测卫星图传系统
网络·物联网·安全·系统架构
小冷Hello2 小时前
迪文屏开发-多国语言-只需一组控件
stm32·单片机·嵌入式硬件
UTP协同自动化测试2 小时前
UTP测试系统为家电及智能家居产品打造高效、合规、体验至上的验证体系
功能测试·物联网·测试工具·视觉检测·压力测试·模块测试·测试覆盖率
一杯原谅绿茶2 小时前
3位6脚数码管的单片机例程
stm32·嵌入式
就是蠢啊3 小时前
51单片机——红外遥控(二)
单片机·嵌入式硬件·51单片机