运作机制
接收成功,使用xClearOnExit 选项来清除已接收到的事件类型。
读取模式
用 户可以自 定义通过传入 参数 xWaitForAllBits 选择读取模式,是等待所有感兴趣的事件还是等待感兴趣的任意一个事件
设置事件
对指定事件写入指定的事件类型,设置事件集合的对应事件位为 1,可
以一次同时写多个事件类型,设置事件成功可能会触发任务调度。
事件唤醒
事件控制块
typedef struct xEventGroupDefinition {
EventBits_t uxEventBits;
List_t xTasksWaitingForBits;
#if( configUSE_TRACE_FACILITY == 1 )
UBaseType_t uxEventGroupNumber;
#endif
#if( ( configSUPPORT_STATIC_ALLOCATION == 1 ) \ && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
uint8_t ucStaticallyAllocated;
#endif
} EventGroup_t;
事件函数
事件创建函数 xEventGroupCreate()
(1)因为事件标志组是 FreeRTOS 的内部资源,也是需要 RAM 的,所以,在创建的时候,会向系统申请一块内存,大小是事件控制块大小 sizeof( EventGroup_t )。
(2):如果分配内存成功,那么久对事件控制块的成员变量进行初始化, 事件标志组变量清零,因为现在是创建事件,还没有事件发生,所以事件集合中所有位都 为 0,然后调用 vListInitialise()函数将事件控制块中的等待事件列表进行初始化,该列表用 于记录等待在此事件上的任务