嘿嘿.又见面了.
到这里,任务的调度和切换,你已经有了深刻的理解.
接下来,自然而然就是任务间的通讯咯.把相关的任务串联起来,就形成了程序的基本架构.
一.队列
为什么要先讲解队列了,因为信号量就是利用队列来实现的.
走,一起瞅瞅
1.1队列的创建
#define xQueueCreate( uxQueueLength, uxItemSize ) xQueueGenericCreate( ( uxQueueLength ), ( uxItemSize ), ( queueQUEUE_TYPE_BASE ) )
默认队列创建是一个宏定义,真正调用的是xQueueGenericCreate,最后一个参数保留给信号量使用.
1.申请内存
2.队列结构体初始化
1.2队列结构体
队列其实是一个类似环形缓冲区的buffer
有发送和接受列表
RxLock和CTxLock是一个特别的地方,后边我们在讲解
注意,前面说过了.由于信号量也使用队列完成,所以使用了联合体区分队列和信号量
1.3队列初始化