002‐FreeRTOS202212‐4001
链表头节点(根节点)初始化
/*链表头节点初始化*/
voidvListInitialise(List_t*constpxList)
{
/*将链表索引指针指向最后一个节点*/
pxList‐>pxIndex=(ListItem_t*)&(pxList‐>xListEnd);
/*将链表最后一个节点的辅助排序的值设置为最大,确保该节点就是链表的最后节点*/
pxList‐>xListEnd.xItemValue=portMAX_DELAY; //0xffffffffUL
/*将最后一个节点的pxNext和pxPrevious指针均指向节点自身,表示链表为空*/
pxList‐>xListEnd.pxNext=(ListItem_t*)&(pxList‐>xListEnd);
pxList‐>xListEnd.pxPrevious=(ListItem_t*)&(pxList‐>xListEnd);
/*初始化链表节点计数器的值为0,表示链表为空*/
pxList‐>uxNumberOfItems=(UBaseType_t)0U;
}
uxNumberOfItems
*pxIndex
ListItem_t
链表节点索引指针
UBaseType_t
链表节点计数器32bit
节点排序值
*pxNext
*pxPrevious
structxLIST_ITEM
structxLIST_ITEM
xMINI_LIST_ITEM(MiniListItem_t)
xItemValue
uint32_t/uint16_t(TickType_t)
xListEnd
xLIST(List_t)
链表头结点结构体
指向链表下一个节点
指向链表前一个节点
①
/*链表头节点初始化*/
voidvListInitialise(List_t*constpxList)
{
/*将链表索引指针指向最后一个节点*/
pxList‐>pxIndex=(ListItem_t*)&(pxList‐>xListEnd);
/*将链表最后一个节点的辅助排序的值设置为最大,确保该节点就是链表的最后节点*/
pxList‐>xListEnd.xItemValue=portMAX_DELAY; //0xffffffffUL
/*将最后一个节点的pxNext和pxPrevious指针均指向节点自身,表示链表为空*/
pxList‐>xListEnd.pxNext=(ListItem_t*)&(pxList‐>xListEnd);
pxList‐>xListEnd.pxPrevious=(ListItem_t*)&(pxList‐>xListEnd);
/*初始化链表节点计数器的值为0,表示链表为空*/
pxList‐>uxNumberOfItems=(UBaseType_t)0U;
}
uxNumberOfItems
*pxIndex
ListItem_t
链表节点索引指针
UBaseType_t
链表节点计数器32bit
节点排序值
*pxNext
*pxPrevious
structxLIST_ITEM
structxLIST_ITEM
xMINI_LIST_ITEM(MiniListItem_t)
xItemValue
uint32_t/uint16_t(TickType_t)
xListEnd
xLIST(List_t)
链表头结点结构体
指向链表下一个节点
指向链表前一个节点
②
/*链表头节点初始化*/
voidvListInitialise(List_t*constpxList)
{
/*将链表索引指针指向最后一个节点*/
pxList‐>pxIndex=(ListItem_t*)&(pxList‐>xListEnd);
/*将链表最后一个节点的辅助排序的值设置为最大,确保该节点就是链表的最后节点*/
pxList‐>xListEnd.xItemValue=portMAX_DELAY; //0xffffffffUL
/*将最后一个节点的pxNext和pxPrevious指针均指向节点自身,表示链表为空*/
pxList‐>xListEnd.pxNext=(ListItem_t*)&(pxList‐>xListEnd);
pxList‐>xListEnd.pxPrevious=(ListItem_t*)&(pxList‐>xListEnd);
/*初始化链表节点计数器的值为0,表示链表为空*/
pxList‐>uxNumberOfItems=(UBaseType_t)0U;
}
uxNumberOfItems
*pxIndex
ListItem_t
链表节点索引指针
UBaseType_t
链表节点计数器32bit
节点排序值
*pxNext
*pxPrevious
structxLIST_ITEM
structxLIST_ITEM
xMINI_LIST_ITEM(MiniListItem_t)
xItemValue= 0xffffffffUL
uint32_t/uint16_t(TickType_t)
xListEnd
xLIST(List_t)
链表头结点结构体
指向链表下一个节点
指向链表前一个节点
*pxList
*pxList
*pxList
③
/*链表头节点初始化*/
voidvListInitialise(List_t*constpxList)
{
/*将链表索引指针指向最后一个节点*/
pxList‐>pxIndex=(ListItem_t*)&(pxList‐>xListEnd);
/*将链表最后一个节点的辅助排序的值设置为最大,确保该节点就是链表的最后节点*/
pxList‐>xListEnd.xItemValue=portMAX_DELAY; //0xffffffffUL
/*将最后一个节点的pxNext和pxPrevious指针均指向节点自身,表示链表为空*/
pxList‐>xListEnd.pxNext=(ListItem_t*)&(pxList‐>xListEnd);
pxList‐>xListEnd.pxPrevious=(ListItem_t*)&(pxList‐>xListEnd);
/*初始化链表节点计数器的值为0,表示链表为空*/
pxList‐>uxNumberOfItems=(UBaseType_t)0U;
}
uxNumberOfItems
*pxIndex
ListItem_t
链表节点索引指针
UBaseType_t
链表节点计数器32bit
节点排序值
*pxNext
*pxPrevious
structxLIST_ITEM
structxLIST_ITEM
xMINI_LIST_ITEM(MiniListItem_t)
xItemValue=0xffffffffUL
uint32_t/uint16_t(TickType_t)
xListEnd
xLIST(List_t)
链表头结点结构体
指向链表下一个节点
指向链表前一个节点
*pxList
④
/*链表头节点初始化*/
voidvListInitialise(List_t*constpxList)
{
/*将链表索引指针指向最后一个节点*/
pxList‐>pxIndex=(ListItem_t*)&(pxList‐>xListEnd);
/*将链表最后一个节点的辅助排序的值设置为最大,确保该节点就是链表的最后节点*/
pxList‐>xListEnd.xItemValue=portMAX_DELAY; //0xffffffffUL
/*将最后一个节点的pxNext和pxPrevious指针均指向节点自身,表示链表为空*/
pxList‐>xListEnd.pxNext=(ListItem_t*)&(pxList‐>xListEnd);
pxList‐>xListEnd.pxPrevious=(ListItem_t*)&(pxList‐>xListEnd);
/*初始化链表节点计数器的值为0,表示链表为空*/
pxList‐>uxNumberOfItems=(UBaseType_t)0U;
}
uxNumberOfItems
*pxIndex
ListItem_t
链表节点索引指针
UBaseType_t
链表节点计数器32bit
节点排序值
*pxNext
*pxPrevious
structxLIST_ITEM
structxLIST_ITEM
xMINI_LIST_ITEM(MiniListItem_t)
xItemValue=0xffffffffUL
uint32_t/uint16_t(TickType_t)
xListEnd
xLIST(List_t)
链表头结点结构体
指向链表下一个节点
指向链表前一个节点
*pxList
⑤
/*链表头节点初始化*/
voidvListInitialise(List_t*constpxList)
{
/*将链表索引指针指向最后一个节点*/
pxList‐>pxIndex=(ListItem_t*)&(pxList‐>xListEnd);
/*将链表最后一个节点的辅助排序的值设置为最大,确保该节点就是链表的最后节点*/
pxList‐>xListEnd.xItemValue=portMAX_DELAY; //0xffffffffUL
/*将最后一个节点的pxNext和pxPrevious指针均指向节点自身,表示链表为空*/
pxList‐>xListEnd.pxNext=(ListItem_t*)&(pxList‐>xListEnd);
pxList‐>xListEnd.pxPrevious=(ListItem_t*)&(pxList‐>xListEnd);
/*初始化链表节点计数器的值为0,表示链表为空*/
pxList‐>uxNumberOfItems=(UBaseType_t)0U;
}
uxNumberOfItems= 0
*pxIndex
ListItem_t
链表节点索引指针
UBaseType_t
链表节点计数器32bit
节点排序值
*pxNext
*pxPrevious
structxLIST_ITEM
structxLIST_ITEM
xMINI_LIST_ITEM(MiniListItem_t)
xItemValue=0xffffffffUL
uint32_t/uint16_t(TickType_t)
xListEnd
xLIST(List_t)
链表头结点结构体
指向链表下一个节点
指向链表前一个节点
*pxList