FreeRTOS 队列使用
队列简介
队列是一种线性表,只能在一端插入数据,而另一端删除数据,最明显的特性就是FIFO,先进先出,跟堆栈这种先进后出的数据结构不太一样。
FreeRTOS队列特性
对FreeRTOS来说,队列是一种很基本数据结构,其中计数信号量,二值信号量等都是利用队列来做的;在FreeRTOS中,队列用于任务与任务之间,任务与中断服务子程序之间的数据传输,其作用类似于裸机编程时使用的全局变量,与全局变量不同的是,队列有阻塞超时时间;任务之间使用队列要遵循FIFO的特性,下面这个图就形象的表达了这个特性:
队列创建
使用队列前要先创建,创建队列使用API函数
xQueueCreate( uxQueueLength, uxItemSize )
参数说明:
uxQueueLength:表示队列的深度,说明该队列能够存储多少单元数据;
uxItemSize:表示队列中数据单元的长度,以字节为单位;
返回值:如果创建成功则返回队列的句柄,如果返回NULL,则表示没有足够的堆空间来分配,队列创建失败;
举个小例子: