freertos通信---信号量与队列

本文介绍了FreeRTOS中任务间通信的关键组件——队列和信号量。首先讲解了队列的创建,包括内存申请和队列结构体初始化。接着详细阐述了队列的发送过程,涉及队列满时的超时阻塞处理。最后,简要提到了队列接收的类似流程,并鼓励读者总结和思考队列通信的核心——任务调度。
摘要由CSDN通过智能技术生成

嘿嘿.又见面了.

到这里,任务的调度和切换,你已经有了深刻的理解.

接下来,自然而然就是任务间的通讯咯.把相关的任务串联起来,就形成了程序的基本架构.

 

一.队列

为什么要先讲解队列了,因为信号量就是利用队列来实现的.

走,一起瞅瞅

 

1.1队列的创建
    #define xQueueCreate( uxQueueLength, uxItemSize ) xQueueGenericCreate( ( uxQueueLength ), ( uxItemSize ), ( queueQUEUE_TYPE_BASE ) )

默认队列创建是一个宏定义,真正调用的是xQueueGenericCreate,最后一个参数保留给信号量使用.

1.申请内存

2.队列结构体初始化

 

1.2队列结构体

队列其实是一个类似环形缓冲区的buffer

有发送和接受列表

RxLock和CTxLock是一个特别的地方,后边我们在讲解

注意,前面说过了.由于信号量也使用队列完成,所以使用了联合体区分队列和信号量

 

1.3队列初始化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值