学习笔记——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的列表项
第二步:插入值为60的列表项
第三步:插入值为50的列表项
可以看到插入的位置由值的大小升序排列而成。
列表项末尾插入
void vListInsertEnd( List_t * const pxList, ListItem_t * const pxNewListItem ) //参数一:要插入的列表 参数二:要插入的列表项
末尾插入与普通插入的不同之处:
默认列表:
插入值为50的列表项:
可以看到列项直接插入到列表的末尾,而不需要进行升序排序。
列表项删除:
UBaseType_t uxListRemove( ListItem_t * const pxItemToRemove ) //参数为需要删除的列表项 返回值删除后剩下的列表项