事件组(event group)
事件组的简单理解
事件组由多位bit位组成,大小取决于多少位的单片机。通过事件组,可以对多个事件进行逻辑的触发进行处理。
事件组的代码实例
事件组的接口函数在event_groups.c里面,需要手动引入。(根据是否需要进行裁剪项目大小)
事件组的创建,需要事件组的句柄。
1 | EventGroupHandle_t EventGroup_Handle_1; |
将创建函数的返回值赋给事件组的句柄,即将这个句柄赋予事件组的特性。
写事件组,变量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