"); //-->
基于RTOS的应用中,通常使用队列机制实现任务间的数据交互,一个应用程序可以有任意数量的消息队列,每个消息队列都有自己的用途。
什么是消息队列?
消息队列是一个内核对象(即数据结构),通过它可以将消息从中断或任务发送给另一个任务。一个应用可以创建多个消息队列。例如,一个队列可用于将从通信接口ISR中接收到的数据包传递给任务,由任务实现数据包的后续处理。另一个队列负责将显示内容传递给显示任务。队列使用场景
使用队列将消息从ISR或任务发送到另一个任务。如果消息长度为指针的大小,可以不必为消息并分配存储区域并发送实际的消息。例如,如果一个指针是32位宽度,那么你可以将一个从12位ADC读取的结果转换为一个指针,并通过消息队列发送。只要接收方将值转换为整数即可。如果任务知道一定时间内没有消息被发送,它可以使用超时机制将自己延迟相应的时间。在这种情况下,长度为1的队列即可满足应用需求。如果另一个任务或ISR发送消息,延迟将被终止,这可能是应用想要实现的行为。消息队列可以用作信号量,通知任务事件发生。在这种情况下,消息可以是任何内容。队列的大小取决于应用程序需要缓存多少个信号。消息队列还可以用作二进制信号量或计数信号量,实现资源共享。消息还可以用来模拟事件标志,其中32位指针变量的每个位(转换为整数)表示一个事件。消息队列可用于实现堆栈结构,使用后进先出机制。总结
消息队列可以以多种不同的方式使用。实际上,由于队列可以模拟许多系统服务,如信号量、时间延迟和事件标志,用户可能只使用消息队列实现相当复杂的应用程序。仅使用队列服务,可以减少代码的空间占用。*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。
1500536942 阅读:8091