FreeRTOS——事件组篇

什么是事件组

在 FreeRTOS 中,事件组(Event Group)是一个用于管理和同步任务的机制。它允许任务之间通过事件标志(bits)来通信和同步。事件组中的每一位(bit)代表一个独立的事件,任务可以设置、清除、等待或查询这些事件标志位。

事件组的主要功能包括:

  1. 设置事件标志位:任务或中断服务例程可以设置一个或多个事件标志位,以表示某些事件已经发生。
  2. 清除事件标志位:任务可以清除一个或多个事件标志位,以重置或表示某些事件已经处理完毕。
  3. 等待事件标志位:任务可以阻塞等待,直到一个或多个特定的事件标志位被设置。这种等待可以是一直等待,直到所有指定的事件都发生,或者只要其中的一个事件发生就退出等待。
  4. 查询事件标志位:任务可以查询当前事件组的状态,以检查哪些事件已经发生。

主要函数及说明

1. 创建事件组

函数xEventGroupCreate

功能:创建一个事件组。

原型

EventGroupHandle_t xEventGroupCreate( void );

返回值:返回事件组的句柄。如果返回 NULL,表示事件组创建失败。

示例

EventGroupHandle_t xEventGroup;

void createEventGroup(void) 
{
   
   
    xEventGroup = xEventGroupCreate();
    if(xEventGroup == NULL) 
	{
   
   
        printf("事件组创建失败\n");
        while(1);
    }
}

2. 设置事件标志位

函数xEventGroupSetBits

功能:设置事件组中的一个或多个事件标志位,即触发事件。

原型

EventBits_t xEventGroupSetBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet );

参数

  • xEventGroup:事件组句柄。
  • uxBitsToSet:要设置的事件标志位。

返回值:返回设置前事件组的事件标志位。

示例

#define EVENT_BIT_0 (1 << 0)

void setEventBits(void) 
{
   
   
    xEventGroupSetBits(xEventGroup, EVENT_BIT_0);
}

3. 清除事件标志位

函数xEventGroupClearBits

功能:清除事件组中的一个或多个事件标志位。

原型

EventBits_t xEventGroupClearBi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

园园顺顺崽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值