如何在 freeRTOS 中向多个接收者发送队列消息?

How to send queue message to multipule receiver in freeRTOS?

我正在寻找一种在 freeRTOS 中使用队列广播消息的方法,我提出了不同的想法,但每个想法都有不同的问题。

我有:

我仍在考虑其他方法,例如为每个接收任务使用新队列或队列,但我不确定哪种方法最好。而且我不知道是否还有其他原因即使不使用队列技术也要广播消息。

我需要告诉你这个程序不是针对特定项目的。我只是想以不同的方式使用队列技术。我已经找到了其他 post 关于广播消息的内容,但这是针对特定问题的,他们在不使用队列技术的情况下解决了该问题。我只想将 "this is a broadcast message" 发送到队列,所有接收方都能够读取它一次(仅一次)。

谢谢。

Event groups are the only broadcast mechanism in FreeRTOS. You could use an event group to unblock all tasks that should read from a queue using the queue peek function, then xEventGroupSync() 了解所有任务何时读取数据以便删除数据。