在 FreeRTOS 中,事件组(Event Group)是一种强大的同步机制,用于任务间的事件通知和状态管理。与信号量相比,事件组具有更高的灵活性和功能,特别适合处理复杂的任务同步和状态管理场景。
1. 事件组的用途
1.1 定义
事件组是一个包含多个事件标志(Event Flags)的数据结构,每个标志可以表示一个独立的事件或状态。任务可以等待一个或多个事件标志被设置,也可以设置或清除事件标志。
1.2 主要功能
-
事件通知:
任务可以等待一个或多个事件标志被设置,从而实现任务间的同步。 -
状态管理:
事件组可以用于表示系统的复杂状态(如多个任务的完成状态)。 -
多事件组合:
任务可以同时等待多个事件的组合(如“事件 A 和事件 B”或“事件 A 或事件 B”)。
2. 事件组相比信号量的优势
2.1 灵活性
-
多事件支持:
事件组可以同时管理多个事件标志,而信号量只能表示单个事件或资源状态。 -
事件组合:
任务可以等待多个事件的组合(如“事件 A 和事件 B”或“事件 A 或事件 B”),而信号量无法实现这种