天天看點

學習筆記——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 清單以及清單項的相關知識

第二步:插入值為60的清單項

學習筆記——FreeRTOS 清單以及清單項的相關知識

第三步:插入值為50的清單項

學習筆記——FreeRTOS 清單以及清單項的相關知識

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

清單項末尾插入

void vListInsertEnd( List_t * const pxList, ListItem_t * const pxNewListItem )	//參數一:要插入的清單 參數二:要插入的清單項
           

末尾插入與普通插入的不同之處:

預設清單:

學習筆記——FreeRTOS 清單以及清單項的相關知識

插入值為50的清單項:

學習筆記——FreeRTOS 清單以及清單項的相關知識

可以看到列項直接插入到清單的末尾,而不需要進行升序排序。

清單項删除:

UBaseType_t uxListRemove( ListItem_t * const pxItemToRemove ) //參數為需要删除的清單項  傳回值删除後剩下的清單項
           

繼續閱讀