FreeRTOS笔记-事件组

  1. 事件组(event group)
    1. 事件组的简单理解

事件组(event group)

事件组的简单理解

事件组由多位bit位组成,大小取决于多少位的单片机。通过事件组,可以对多个事件进行逻辑的触发进行处理。

事件组的代码实例
事件组的接口函数在event_groups.c里面,需要手动引入。(根据是否需要进行裁剪项目大小)
事件组的创建,需要事件组的句柄。

1
2
EventGroupHandle_t EventGroup_Handle_1;
EventGroup_Handle_1 = xEventGroupCreate();

将创建函数的返回值赋给事件组的句柄,即将这个句柄赋予事件组的特性。

写事件组,变量1为句柄,变量2是对该事件组的哪一位进行写操作。在该示例代码中,使用该接口函数就是对事件组中的某一位
进行写操作;如(1<<0)就是对0x01位移0位,其保持原位任然为0x01.

1
xEventGroupSetBits(EventGroup_Handle_1, (1<<0));

读事件组的接口函数使用如下,使用效果为等待事件组某些条件成立

1
xEventGroupWaitBits(EventGroup_Handle_1,((1<<0)|(1<<1)),pdTRUE,pdTRUE, portMAX_DELAY);

该接口函数的传入参数如下:

  • 1、句柄 ,需要传入事件组的句柄
  • 2、事件位,该位置输入需要读取的位置,可同时读取多位
  • 3、读取是否清除事件位 ,输入pdTRUE或者pdFALSE,说明是否在读取后清除
  • 4、True就是与条件,或者是或条件
  • 5、等待时间,portMAX-DELAY即为阻塞直到达成条件
    1
    xEventGroupWaitBits(EventGroup_Handle_1,((1<<0)|(1<<1)),pdTRUE,pdTRUE, portMAX_DELAY);

    事件组不能传输数据,我们可以用队列进行数据的传输,通过事件组来通知数据准备完成。

事件组的同步点:
这个函数可以等待事件完成,条件是所有条件的事件组都存在,即可继续运行。

1
xEventGroupSync(EventGroup_Handle_2, 事件, 所有条件事件, portMAX_DELAY);

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以邮件至 1186703947@qq.com

💰

×

Help us with donation

相册 动态菜单1