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


}
相关推荐
雾削木1 小时前
STM32 HAL + FreeRTOS(CMSIS-RTOS V1)完整开发攻略
stm32·单片机·嵌入式硬件
wuyk55510 小时前
第2章:六步换相原理全解+STM32工程实战
c语言·开发语言·stm32·单片机·嵌入式硬件
小僧景贤14 小时前
单片机全方位调试实战指南:串口/RTT/逻辑分析仪/示波器/内核排错分层避坑教程
单片机·嵌入式硬件·物联网
LeoZY_18 小时前
LinkScope 使用笔记:基于 OpenOCD 的通用硬件芯片调试助手
笔记·单片机·嵌入式硬件·开源软件
汤姆yu19 小时前
基于ESP32的玫瑰大棚智能系统
物联网·esp32·arduino·大棚温湿度
星空真迷人20 小时前
嵌入式鸿蒙并非精简版,核心究竟是什么?
stm32·单片机·嵌入式硬件·物联网·华为·harmonyos·iot
iCxhust20 小时前
8088单板机VScode集成开发环境使用方法二(汇编版)
汇编·单片机·微机原理·8088单板机
hongmai66688820 小时前
GK7205V300芯片深度解析:H.265低功耗视觉主控,助力安防监控高效选型
arm开发·嵌入式硬件·物联网·智能家居·h.265·risc-v
微硬创新20 小时前
耐达讯自动化:16路4-20mA模拟信号,该怎样平稳接入PROFINET控制系统?
人工智能·物联网·网络协议·自动化·信息与通信
m0_4666077021 小时前
只用三步使用MCSDK6生成电机控制工程
stm32·电机控制