学习笔记——FreeRTOS 列表以及列表项的相关知识

列表作用:用于追踪freeRTOS的任务

列表:
定义方法:List_t ****;
列表的成员变量:(不包括列表的完整性检测)

	uxNumbersOfItems 	//用于记录列表项的数量
	pxIndex			//用于记录当前列表项的索引号用于遍历列表
	xListEnd			//列表中最后一个列表项

列表项:
定义方法:ListItem_t ***;
列表项成员变量:(不包括列表项完整性的检测变量)

	xItem value  //列表项的值
	pxNext	//指向下一个列表项
	pxPrevious	//指向上一个列表项
	pvOwner		//列表项的所有者(通常为人物控制块)
	pvContainer	//记录列表项归属于哪一个列表

迷你列表项成员变量:(不包括列表项完整性检测的成员变量)

	xItem value  	//列表项的值
	pxNext		//指向下一个列表项
	pxPrevious	//指向上一个列表项

列表和列表项初始化用到的函数:

	void vListInitialise( List_t * const pxList )	 	//列表初始化 、参数为列表
	void vListInitialiseItem( ListItem_t * const pxItem )  	//列表项初始化、参数为列表项

列表项的插入相关函数:

	void vListInsert( List_t * const pxList, ListItem_t * const pxNewListItem )     //参数一:被插入的列表   参数二:插入的列表项

注意:插入的位置由列表项中的值按照升序的方式排列
eg:
第一步:插入值为40的列表项学习笔记——FreeRTOS 列表以及列表项的相关知识_第1张图片

第二步:插入值为60的列表项学习笔记——FreeRTOS 列表以及列表项的相关知识_第2张图片

第三步:插入值为50的列表项
学习笔记——FreeRTOS 列表以及列表项的相关知识_第3张图片

可以看到插入的位置由值的大小升序排列而成。

列表项末尾插入

	void vListInsertEnd( List_t * const pxList, ListItem_t * const pxNewListItem )	//参数一:要插入的列表 参数二:要插入的列表项

末尾插入与普通插入的不同之处:
默认列表:

学习笔记——FreeRTOS 列表以及列表项的相关知识_第4张图片

插入值为50的列表项:
学习笔记——FreeRTOS 列表以及列表项的相关知识_第5张图片

可以看到列项直接插入到列表的末尾,而不需要进行升序排序。

列表项删除:

UBaseType_t uxListRemove( ListItem_t * const pxItemToRemove ) //参数为需要删除的列表项  返回值删除后剩下的列表项

你可能感兴趣的:(STM32,FreeRTOS)