好学校平台网站模板下载不了/网站优化 推广
FreeRTOS 事件组(Event Groups)
在本实例中,我们将学习使用事件组。 事件组也是 FreeRTOS 提供的一项重要功能。 首先,我们将看到一个介绍事件组的介绍,其中显示了如何以及在何处使用它。 之后,我们将看到一个 Arduino 的演示示例。
1、事件组介绍
在前面的教程中,我们了解到 FreeRTOS 提供了信号量和互斥事件。 这些事件是为任务同步而实现的,例如任务在阻塞状态等待事件发生,并在发生特定事件时解除任务的阻塞。 类似地,事件组用于将事件发生传达给任务。 与队列和信号量相反,事件组允许将任务与一个或多个事件同步。 此外,它可用于解除多个等待事件或多个事件的任务的阻塞。
换句话说,它可以用于通过使用单个事件或多个事件来同步多个任务。 此外,它还可以阻塞等待多个事件发生的单个任务,并在事件集发生时解除阻塞任务。
1)为什么要使用事件组
我们知道,嵌入式实时应用程序是内存受限的设备。 需要有效使用微控制器存储器才能在单个微控制器上承载最大功能。 通过使用事件组,我们可以最大限度地减少基于 RTOS 的应用程序的 RAM 使用。 因为我们可以简单地用单个事件组替换它们,而不是使用多个二进制信号量。
注意:要使用 FreeRTOS 的事件组功能,只需在 Arduino 源文件中添加 event_groups.c 库。
2)如何使用 FreeRTOS 事件组
事件组主要有两个重要术语,例如事件标志和事件位。 事件组基本上是一组事件标志。 事件标志是一个布尔值,它是“