FreeRTOS队列

本文详细阐述了FreeRTOS中队列的创建、发送和接收过程,包括不同发送模式和阻塞接收的原理。同时探讨了队列在FreeRTOS中的扩展应用,如Queue集、邮箱和互斥量的实现,以及在资源管理中的作用。
摘要由CSDN通过智能技术生成

本文介绍了FreeRTOS队列的创建、发送和阻塞接收的过程和原理,以及基于队列实现的其它系统功能。

由于FreeRTOS很多API其实是通过宏定义,不同的FreeRTOS版本,宏的实际函数可能不相同,所以,本文并不区分是宏还是函数。

队列的创建

  • 创建队列管理结构体Queue_t,包括申请内存
  • 申请队列内容所需内存,填充Queue_t

创建队列接口:
xQueueCreate( uxQueueLength, uxItemSize )
返回QueueHandle_t,其实是void *.

申请队列管理结构体内存:
pxNewQueue = ( Queue_t * ) pvPortMalloc( sizeof( Queue_t ) );

申请队列内容所需内存,并填充Queue_t:

pxNewQueue->pcHead = ( int8_t * ) pvPortMalloc( xQueueSizeInBytes );
pxNewQueue->uxLength = uxQueueLength;
pxNewQueue->uxItemSize = uxItemSize;

返回Queue_t:
以void *的形式返回,使用时需要转换为Queue_t *.

队列发送

为了简便,以下使用“发送队列消息”代表“往队列中发送内容”。

任务可以使用创建队列时获得的全局变量QueueHandle_t,虽然它属于系统的变量,但是任务也可以访问。<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值