xEventGroupWaitBits() 是一个在 FreeRTOS 中用于等待事件组某些位状态的函数。它的参数和功能如下所示:
函数原型: EventBits_t xEventGroupWaitBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToWaitFor, const BaseType_t xClearOnExit, const BaseType_t xWaitForAllBits, TickType_t xTicksToWait );
参数说明:
- xEventGroup:事件组的句柄,通过 xEventGroupCreate() 创建并获得。
- uxBitsToWaitFor:指定所等待的事件组位。可以使用逻辑或(|)运算符组合多个位。
- xClearOnExit:标志位,决定等待结束后是否清除等待的位。设置为 pdTRUE 表示清除,pdFALSE 表示不清除。
- xWaitForAllBits:标志位,表示等待的条件是等待所有位还是任意一位。设置为 pdTRUE 表示等待所有位,pdFALSE 表示等待任意一位。
- xTicksToWait:指定在等待位状态改变时的最大等待时间。
函数功能: xEventGroupWaitBits() 函数用于等待指定的事件组位满足特定条件,并在等待期间阻塞当前任务。它的功能如下:
- 当等待的事件组位满足条件时,任务将被唤醒,并返回事件组的当前状态(满足条件的位)。
- 当等待的事件组位不满足条件时,任务将进入阻塞状态,并等待指定的时间或直到事件组位满足条件。
- 可以选择在等待结束后自动清除等待的位,或者保留位的状态。
- 可以选择是等待所有指定的位还是任意一位。
- 如果指定的时间为 0,则立即检查位的状态并返回结果,不进行阻塞。
需要注意的是,xEventGroupWaitBits() 函数只能在任务上下文中使用。它允许任务等待事件组位的改变,以实现任务间的同步和协调。
20230805