FreeRTOS事件标志组
一、什么是事件标志组
事件标志位:表明某个事件是否发生,联想:全局变量flag。通常按位表示,每一个位表示一个事件(高八位不算)
事件标志组:是一组事件标志位的集合,可以简单的理解事件标志组,就是一个整数。
事件标志组本质是一个16位或32位无符号的数据类型EventBits_t,由configUSE_16BIT_TICKS决定(如果是0,代表是32位,其它情况下是16位)
尽管使用32位无符号的数据类型变量来存储事件标志,但其中的高8位用作存储事件标志组的控制信息,低24位用作存储事件标志,所以说一个事件组最多可以存储24个事件标志!
二、事件标志组相关API函数
函数 | 描述 |
xEventGroupCreate() | 使用动态方式创建事件标志位 |
xEventGroupCreateStatic() | 使用静态方式创建事件标志位 |
xEventGroupClearBits() | 清零事件标志位 |
xEventGroupClearBitsFromISR() | 在中断中清零事件标志位 |
xEventGroupSetBits() | 设置事件标志位 |
xEventGroupSetBitsFromISR() | 在中断中设置事件标志位 |
xEventGroupWaitBits() | 等待事件标志位 |
1.创建事件标志组
EventGroupHandle_t xEventGroupCreate (void);
参数:
无
返回值:
成功,返回对应互斥量的句柄;
失败,返回NULL。
2.设置事件标志位
EventGroupHandle_t xEventGroupSetBits (EventGroupHandle_t xEventGroup,const EventBits_t uxBitsToSet);
参数:
xEventGroup:返回对应互斥量的句柄。
uxBitsToSet:指定要在事件组中设置的一个或多个位的按位值。
返回值:
设置之后事件组中的事件标志位值
3.清除事件标志位
EventGroupHandle_t xEventGroupClearBits (EventGroupHandle_t xEventGroup,const EventBits_t uxBitsToClear);
参数:
xEventGroup:返回对应互斥量的句柄。
uxBitsToSet:指定要在事件组中清除的一个或多个位的按位值。
返回值:
设置之后事件组中的事件标志位值
4.等待事件标志位
EventGroupHandle_t xEventGroupWaitBits (const EventGroupHandle_t xEventGroupconst EventBits_t uxBitsToWaitFor,const BaseType_t xClearOnExit,const BaseType_t xWaitForAllBits,TickType_t xTicksToWait);