我是靠谱客的博主 靓丽小兔子,最近开发中收集的这篇文章主要介绍FreeRTOS笔记---列表和列表项,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.列表结构体

typedef struct xLIST

{

       listFIRST_LIST_INTEGRITY_CHECK_VALUE                //用来检查数据的完整性

       configLIST_VOLATILE UBaseType_t uxNumberOfItems;//记录列表中列表项的数目

       ListItem_t * configLIST_VOLATILE pxIndex;                   //当前列表的索引号,用于遍历列表

        MiniListItem_t xListEnd;                                                //列表中最后一个列表项,表示列表的结束,其类型为MiniListItem_t

      listSECOND_LIST_INTEGRITY_CHECK_VALUE         //用来检查数据的完整性

}List_t;

2.MiniListItem_t的结构体

struct xMINI_LIST_ITEM
{
    listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE;                     //用于检查数据的完整性        
    configLIST_VOLATILE TickType_t xItemValue;                               //列表项的值
    struct xLIST_ITEM * configLIST_VOLATILE pxNext;                      //指向下一个列表项
    struct xLIST_ITEM * configLIST_VOLATILE pxPrevious;               //指向前一个列表项
};
typedef struct xMINI_LIST_ITEM MiniListItem_t;

3.列表项

struct xLIST_ITEM
{
    listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE            //检查数据完整性
    configLIST_VOLATILE TickType_t xItemValue;                       //列表项的值
    struct xLIST_ITEM * configLIST_VOLATILE pxNext;              //此列表项的指向的下一个列表项
    struct xLIST_ITEM * configLIST_VOLATILE pxPrevious;       //此列表项指向的后一个列表项
    void * pvOwner;                                                                      //此列表项归谁所有,通常指向任务控制块
    void * configLIST_VOLATILE pvContainer;                           //此列表项属于那个列表,例如就绪列表,阻塞列表
    listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE        //检查数据的完整性
};
typedef struct xLIST_ITEM ListItem_t;                    /* For some reason lint wants this as two separate definitions. */

4.列表初始化

1.列表初始化时,列表是空的,因此列表的pxindex是指向列表的尾的

2、3、4:初始化列表的xListEnd

5:列表的列表项的数目为0

初始化完成功能以后,列表如下所示:

5.初始化列表项

1.此列表项暂时不属于任何列表

6.列表项的插入

1.插入列表项的值,根据这个值才能确定要插入列表的位置

2.如果列表项的值是最大值,就把此列表项插到对尾

3.遍历列表,找到列表项插入的位置

4.把列表项插入列表

5.设置列表项归此列表

6.列表的列表项的数目加1

 

7.列表项的删除

1.确定要删除列表项的归属列表

2.通过操作链表指向删除列表项

3.如果列表的指向为要删除的列表项,则列表指向要删除列表项的前一项

4.要删除的列表项的Container指向空

5.列表的列表项数目减1

6.返回列表的列表项数目

 

7.列表的遍历

1.列表指向的列表项的pvowner记录为pxTCB;pxList是遍历的列表

2.列表的index指向下一个列表项

3.如果列表的inxdex指向了xListend,

4.列表的index指向下一个列表项->列表头的列表项

5.确认任务控制块

 

 

最后

以上就是靓丽小兔子为你收集整理的FreeRTOS笔记---列表和列表项的全部内容,希望文章能够帮你解决FreeRTOS笔记---列表和列表项所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部