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);//一直等待
   
  }


}
相关推荐
蓝蜂物联网14 小时前
告别出差!蓝蜂物联网网关让PLC程序远程修改零延迟
物联网·自动化·bug
易享电子15 小时前
基于单片机步进电机控制电机正反转加减速系统Proteus仿真(含全部资料)
单片机·嵌入式硬件·51单片机·proteus·智能家居
融智兴科技16 小时前
盛大启幕!融智兴科技亮相 IOTE 2025 深圳国际物联网展
科技·物联网
易享电子16 小时前
基于单片机空调温度控制测温ds18b20系统Proteus仿真(含全部资料)
单片机·嵌入式硬件·51单片机·proteus·智能家居
点灯小铭16 小时前
基于51单片机汽车自动照明灯超声波光敏远近光灯设计
单片机·嵌入式硬件·汽车·毕业设计·51单片机·课程设计
小刘爱玩单片机17 小时前
【stm32简单外设篇】-4×4 薄膜键盘
stm32·单片机·计算机外设
小白嘎嘎18 小时前
ESP8266:Arduino学习
单片机·嵌入式硬件
源远流长jerry18 小时前
STM32之Systick与基础定时器
c语言·stm32·单片机·嵌入式硬件
爱睡觉的王宇昊21 小时前
GD32和STM32的区别在哪里?
stm32·单片机·嵌入式硬件
taxunjishu1 天前
ProfiNet 转 Ethernet/IP基于西门子 S7 - 1500 与罗克韦尔 PLC 的汽车零部件加工线协同案例
运维·人工智能·物联网·自动化·区块链