04 FreeRTOS - 列表API

4.1 列表初始化

/*********************************************************************************
* 函数名: vListInitialise
* 功能:   初始化链表
* 输入:   pxList [要初始化的链表指针]
* 输出:   无
*********************************************************************************/ 
void vListInitialise( List_t * const pxList );

4.2 链表项初始化

/*********************************************************************************
* 函数名: vListInitialiseItem
* 功能:   初始化链表
* 输入:   pxItem [要初始化的链表项指针]
* 输出:   无
*********************************************************************************/ 
void vListInitialiseItem( ListItem_t * const pxItem )

4.3 插入链表项

/*********************************************************************************
* 函数名: vListInsert
* 功能:   向列表中插入列表项
* 输入:   pxList[列表地址] pxNewListItem[列表项地址]
* 输出:   无
* 备注:   列表项在列表的位置是按照值的大小来排序的
*********************************************************************************/ 
void vListInsert( List_t * const pxList, ListItem_t * const pxNewListItem )
/*********************************************************************************
* 函数名: vListInsertEnd
* 功能:   向列表尾部插入列表项
* 输入:   pxList[列表地址] pxNewListItem[列表项地址]
* 输出:   无
*********************************************************************************/ 
void vListInsertEnd( List_t * const pxList, ListItem_t * const pxNewListItem )

4.4 移除列表项 因为列表项中存在属于哪个列表,所以参数只有列表项一项就够了

/*********************************************************************************
* 函数名: uxListRemove
* 功能:   列表中移除列表项
* 输入:   移除的列表项
* 输出:   列表中剩余的列表项数
*********************************************************************************/ 
UBaseType_t uxListRemove( ListItem_t * const pxItemToRemove )

4.5 应用示例

//task1任务函数
void task1_task(void *pvParameters)
{
   
    ListItem_t uNode1;
    ListItem_t uNode2;
    ListItem_t uNode3;
    ListItem_t uNode4;
    ListItem_t uNode5;
    List_t     uList;
    
    vListInitialise(&uList);      // 初始化列表
    vListInitialiseItem(&uNode1); // 初始化列表项
    vListInitialiseItem(&uNode2); // 初始化列表项
    vListInitialiseItem(&uNode3); // 初始化列表项
    vListInitialiseItem(&uNode4); // 初始化列表项
    vListInitialiseItem(&uNode5); // 初始化列表项
    
    uNode1.xItemValue = 5;  // 列表项赋值
    uNode2.xItemValue = 10; // 列表项赋值
    uNode3.xItemValue = 15; // 列表项赋值
    uNode4.xItemValue = 20; // 列表项赋值
    uNode5.xItemValue = 25; // 列表项赋值
    
    printf("uList addr is %X\r\n",(int)&uList);
    printf("uNode1.xItemValue = %X, uNode1 addr is %X\r\n",uNode1.xItemValue, (int)&uNode1);
    printf("uNode2.xItemValue = %X, uNode2 addr is %X\r\n",uNode2.xItemValue, (int)&uNode2);
    printf("uNode3.xItemValue = %X, uNode3 addr is %X\r\n",uNode3.xItemValue, (int)&uNode3);
    printf("uNode4.xItemValue = %X, uNode4 addr is %X\r\n",uNode4.xItemValue, (int)&uNode4);
    printf("uNode5.xItemValue = %X, uNode5 addr is %X\r\n",uNode5.xItemValue, (int)&uNode5);
    printf("uList.uxNumberOfItems = %d\r\n",(int)uList.uxNumberOfItems);
    printf("\r\n");
    vListInsert(&uList,&uNode1);
    printf("\r\nvListInsert(&uList,&uNode1);\r\n");
    printf("uList.uxNumberOfItems = %d\r\n",(int)uList.uxNumberOfItems);
    printf("uList.pxIndex = %X \r\n",(int)uList.pxIndex);
    printf("uNode1.pxPrevious = %X \r\n",(int)uNode1.pxPrevious);
    printf("uNode1.pxNext = %X \r\n",    (int)uNode1.pxNext);
    printf("uNode1.xItemValue = %X \r\n",(int)uNode1.xItemValue);
    printf("\r\n");
    
    vListInsert(&uList,&uNode5);
    printf("\r\nvListInsert(&uList,&uNode5);\r\n"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值