微信公众号模板素材网站,网络品牌推广费用,网站开发讲座,永定路网站建设目录 六、事件组6.1 基本概念6.2 创建6.3 设置事件6.4 等待事件6.5 实例 六、事件组 该部分在上份代码基础上修改得来#xff0c;代码下载链接#xff1a; https://wwzr.lanzout.com/iihn01la39je 密码:dtr0 该代码尽量做到最简#xff0c;不添加多余的、不规范的代码。 内容… 目录 六、事件组6.1 基本概念6.2 创建6.3 设置事件6.4 等待事件6.5 实例 六、事件组 该部分在上份代码基础上修改得来代码下载链接 https://wwzr.lanzout.com/iihn01la39je 密码:dtr0 该代码尽量做到最简不添加多余的、不规范的代码。 内容主要包括
事件组的概念、创建、设置事件、等待事件。
最终实现效果
任务1去设置事件位0任务2去设置事件位1任务等待事件位 0 和 1 同时发生。效果1、2先运行运行完后3运行。 6.1 基本概念
当你在一个多任务系统中需要对多个事件进行同步、通信或控制时FreeRTOS的事件组Event Group就变得非常有用。事件组允许任务等待多个事件中的任何组合从而实现复杂的同步和通信操作。
应用场景
复杂任务同步当任务需要等待多个事件中的任何组合时事件组非常有用。任务可以使用 xEventGroupWaitBits 等待多个事件位的组合从而实现复杂的条件同步。
6.2 创建
使用 xEventGroupCreate 函数来创建一个事件组。
// 定义事件组句柄
static EventGroupHandle_t g_xEventGroupTest;// 创建事件组
g_xEventGroupTest xEventGroupCreate();6.3 设置事件
设置事件位
使用 xEventGroupSetBits 函数将指定的事件位设置为1。
/* 设置事件组: bit0 */
xEventGroupSetBits(g_xEventGroupTest, (10));这将设置事件组中对应的事件位。
6.4 等待事件
使用 xEventGroupWaitBits 函数等待指定的事件位被设置为1。
xEventGroupWaitBits(xEventGroup, xBitsToWaitFor, xClearOnExit, xWaitForAllBits, xTicksToWait);
/*
xEventGroup 事件组句柄
uxBitsToWaitFor 等待哪些位
xClearOnExit 等待完成后是否清除事件位 pdTRUE: 清除uxBitsToWaitFor指定的位 pdFALSE: 不清除
xWaitForAllBits and还是or pdTRUE: 等待的位全部为1; pdFALSE: 等待的位某一个为1即可
xTicksToWait 如果期待的事件未发生阻塞多久。若为0则立即返回若为portMAX_DELAY则无限等待。
*/示例
/* 等待事件:bit0 and bit1 */
xEventGroupWaitBits(g_xEventGroupTest, (10)|(11), pdTRUE, pdTRUE, portMAX_DELAY);6.5 实例
创建 设置、等待