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


}
相关推荐
创思通信5 分钟前
4G模块 A7680发送中文短信到手机
物联网·信息与通信·4g·a7680
dzzzs1 小时前
飞书会议室预约如何集成智能门锁,实现无钥匙管理
物联网
风之子npu1 小时前
后仿之debug记录
单片机·嵌入式硬件
芯巧电子3 小时前
PSpice软件快速入门系列--11.如何进行PSpice AA电应力(Smoke)分析
单片机·嵌入式硬件
景彡先生3 小时前
STM32 RTOS 开发基础:从任务管理到同步机制的全面解析
stm32·单片机·嵌入式硬件
GalaxySinCos3 小时前
03 51单片机之独立按键控制LED状态
单片机·嵌入式硬件·51单片机
TESmart碲视3 小时前
显示器如何突破 DisplayPort 1.4 的带宽限制,显示更高的分辨率刷新率
单片机·物联网·计算机外设·电脑·智能硬件
书山有路勤为径~3 小时前
6 基于STM32单片机的智能家居系统设计(STM32代码编写+手机APP设计+PCB设计+Proteus仿真)
stm32·单片机·智能家居
森焱森5 小时前
高端伺服驱动“ARM+FPGA”架构的技术
arm开发·单片机·算法·fpga开发·架构
S,D5 小时前
锁步核,为什么叫锁步核?
驱动开发·单片机·嵌入式硬件·mcu·iso26262·锁步核·车规mcu