一、背景
在实际的项目开发中,经常会遇到在任务于任务之间或任务于中断之间需要进行“沟通交
流”,这里的“沟通交流”就是消息传递的过程。在不使用操作系统的情况下,函数与函数,或函数与中断之间的“沟通交流”一般使用一个或多多个全局变量来完成,但是在操作系统中,因为会涉及“资源管理”的问题,比方说读写冲突,因此使用全局变量在任务于任务或任务于中断之间进行消息传递,并不是很好的解决方案。FreeRTOS 为此提供了“队列”的机制。
二、简介
队列是一种任务到任务、任务到中断、中断到任务数据交流的一种机制。在队列中可以存
储数量优先、大小固定的多个数据,队列中的每一个数据叫做队列项目,队列能够存储队列项目的最大数量称为队列的长度,在创建队列的时候,就需要指定所创建队列的长度及队列项目的大小。因为队列是用来在任务与任务或任务于中断之间传递消息的一种机制,因此队列也叫做消息队列。
全局变量的弊端:数据无保护,导致数据不安全,当多个任务同时对该变量操作时,数据易受损。读写队列做好了保护,防止多任务同时访问冲突。
基于队列,FreeRTOS 实现了多种功能,其中包括队列集、互斥信号量、计数型信号量、二
值信号量、递归互斥信号量,因此很有必要深入了解 FreeRTOS 的队列。