FreeRTOS 队列集合(Queue Sets)
在前面的FreeRTOS队列多任务数据接收与发送实例中,我们看到了单个任务如何使用结构类型的单个队列从多个任务接收数据。 在本实例中,将演示使用 FreeRTOS 队列集合。
1、为什么需要使用队列集合
例如,如果我们想将第三方或外部代码集成到应用程序中,则需要一个专用队列来接收来自该第三方代码的数据。
假设我们有一个数据接收任务和多个数据发送任务。 每个发送任务将数据写入不同的队列,但只有一个数据接收任务,我们如何区分接收到的队列数据。 因此,我们可以通过使用“队列集”来解决这个问题。
总之,通过使用队列集,单个任务可以从多个队列接收数据(相同或不同类型),而无需任务轮询来确定哪个持有数据。
注意:如果应用程序设计不需要从第三方代码接收数据,建议不要使用 FreeRTOS 队列集。 因为 FreeRTOS 队列集使程序效率降低。 无需第三方代码,正如我们在上一个教程中所见,我们可以通过将结构作为项目传递给队列来实现从多个资源接收数据的相同功能。
2、FreeRTOS队列集合配置
默认情况下,FreeRTOS的队列集合是关闭的,编译前需要将队列集的配置打开: