16.2 创建事件标志组
FreeRTOS 提供了两个用于创建事件标志组的函数,如表 16.2.1 所示:
函数 描述
xEventGroupCreate() 使用动态方法创建事件标志组。
xEventGroupCreateStatic() 使用静态方法创建事件标志组
表 16.2.1 事件标志组创建函数
1、函数 xEventGroupCreate()
此函数用于创建一个事件标志组,所需要的内存通过动态内存管理方法分配。由于内部处
理 的 原 因 , 事 件 标 志 组 可 用 的 bit 数 取 决 于 configUSE_16_BIT_TICKS , 当
configUSE_16_BIT_TICKS1 为 1 的时候事件标志组有 8 个可用的位 (bit0~bit7) ,当
configUSE_16_BIT_TICKS 为 0 的时候事件标志组有 24 个可用的位(bit0~bit23)。EventBits_t 类
型的变量用来存储事件标志组中的各个事件位,函数原型如下:
EventGroupHandle_t xEventGroupCreate( void )
参数:
无。
返回值:
NULL: 事件标志组创建失败。
其他值: 创建成功的事件标志组句柄。
2、函数 xEventGroupCreateStatic()
此函数用于创建一个事件标志组定时器,所需要的内存需要用户自行分配,此函数原型如
下:
EventGroupHandle_t xEventGroupCreateStatic( StaticEventGroup_t *pxEventGroupBuffer )
参数:
pxEventGroupBuffer: 参数指向一个 StaticEventGroup_t 类型的变量,用来保存事件标志组结
构体。
返回值:
NULL: 事件标志组创建失败。
其他值: 创建成功的事件标志组句柄。
16.3 设置事件位
FreeRTOS 提供了 4 个函数用来设置事件标志组中事件位(标志),事件位(标志)的设置包括
清零和置 1 两种操作,这 4 个函数如表 16.3.1 所示:
函数 描述
xEventGroupClearBits() 将指定的事件位清零,用在任务中。
xEventGroupClearBitsFromISR() 将指定的事件位清零,用在中断服务函数中