17 FreeRTOS队列及队列操作试验
1.队列简介
1.1 队列:
为了任务与任务,任务与中断之间的通信而准备的,可以在任务与任务,任务与中断之间传递消息,队列中可以存储有限的,大小固定的数据项目。
1.2 队列项目:
任务与任务、任务与中断之间要交流的数据保存在队列
1.3队列的长度:
队列所能保存的最大数据项目数量
创建队列会指定数据项目的大小和队列的长度
1.4 消息队列:
队列用来传递消息
FreeRTOS 中的信号量依据队列实现的
2 队列操作函数
2.1 队列创建
xQueueCreate() //创建队列(动态方法)
xQueueCreateStatic() //创建队列(静态方法)
xQueueGenericCreate() //通用队列创建函数(动态方法,系统使用)
xQueueGenericCreateStatic() //通用队列创建函数(静态方法,系统使用)
2.2 入队函数
2.2.1 任务级入队函数
xQueueSend() //发生信息到队列尾部(后向入队),这俩个函数是一样的
xQueueSendToBack()
xQueueSendToFront() //发送消息到队列头(前向入队)
xQueueOverwrite() //发送消息到队列,带覆写功能,当队列满了后自动覆盖旧的消息
2.2.2 中断级入队函数
xQueueSendFromISR()
xQueueSendToBackFromISR() //发送消息到队列尾(后向入队),这个俩个函数一样,用于中断服务函数
xQueueSendToFrontFromISR() //发送消息到队列头(前进入队),用于中断服务函数
xQueueOverwriteFromISR() //发送消息到队列,带覆写功能,当队列满了后自动覆盖旧的消息,用于中断服务函数
2.3 出队函数
2.3.1 任务级出队函数
XQueueReceive() //从队列中读取队列项(消息),并且读取完以后删除掉队列项(消息)
xQueuePeek() //从队列中读取队列项(消息),而且读取完以后不删除队列项(消息)
2.3.2 中断级出队函数
xQueueReceiveFromISR() //从队列中读取队列项(消息),并且读取完以后删除掉队列项(消息),用于中断服务函数中
xQueuePeekFromISR() //从队列中读取队列项(消息),并且读取完以后不删除队列项(消息),用于中断服务函数中