【FreeRTOS】小白进阶之如何创建和使用FreeRTOS消息队列(一)

本文详细介绍了FreeRTOS中消息队列的使用,包括FIFO和LIFO数据存取方式,对比了消息队列与全局数组的区别,并通过实例展示了任务间和中断方式的消息队列操作,强调了中断服务程序中处理消息的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章主要讲解如何创建和使用队列。

消息队列浅析:

一个或者多个任务可以通过 RTOS 内核服务从队列中得到消息,通常先进入消息队列的消息先传
给任务,即先进先出的原则(FIFO),FreeRTOS 的消息队列支持 FIFO 和 LIFO 两种数据存取方式。

相比消息队列,使用全局数组主要有如下四个问题: 

a、使用消息队列可以让 RTOS 内核有效地管理任务,而全局数组是无法做到的,任务的超时等机制需要用户自己去实现
b、使用全局数组需要防止多任务的访问冲突,而使用消息队列则处理好了这个问题,用户无需担心
c、使用消息队列可以有效地解决中断服务程序与任务之间消息传递的问题
d、FIFO 机制更有利于数据的处理

任务间消息队列

该消息队列可以存放 10 个消息:

创建 2 个任务 Task1 和 Task2,任务 Task1 向消息队列放数据,任务 Task2 从消息队列取数据。

FreeRTOS 的消息存取采用 FIFO 方式,运行过程主要有以下两种情况:

a、放数据的速度快于取数据的速度

会出现消息队列存放满的情况,FreeRTOS 的消息存放函数 xQueueSend 支持超时等待,用户可以设置超时等待,直到有空间可以存放消息或者设置的超时时间溢出。

b、放数据的速度慢于取数据的速度

会出现消息队列为空的情况,FreeRTOS 的消息获取函数 xQueueReceive 支持超时等待,用户可以设置超时等待,直到消息队列中有消息或者设置的超时时间溢出。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

产品人卫朋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值