当前位置: 代码迷 >> 综合 >> Free RTOS List 学习
  详细解决方案

Free RTOS List 学习

热度:75   发布时间:2023-12-08 12:35:44.0

文章目录

  • Free RTOS List 学习
    • 二、链表的操作
      • 2.1 链表节点初始化函数在list.c中实现:
      • 2.2 链表根节点的数据结构在list.h中定义;
      • 2.3 链表根节点的初始化在list.c中实现:
      • 2.4 将节点插入到链表的尾部:
      • 2.5 将节点按照升序排列插入到链表:
      • 2.6 将节点从链表删除
    • 链表节点插入实验:
    • 仿真结果:

Free RTOS List 学习

二、链表的操作

Free RTOS中,与链表相关的操作都在 list.h 和list.c 这两个文件中实现。

2.1 链表节点初始化函数在list.c中实现:

void vListInitialiseItem( ListItem_t * const pxItem );

2.2 链表根节点的数据结构在list.h中定义;

2.3 链表根节点的初始化在list.c中实现:

void vListInitialise( List_t * const pxList );

2.4 将节点插入到链表的尾部:

void vListInsertEnd( List_t * const pxList, ListItem_t * const pxNewListItem );

 将节点插入到链表的尾部

2.5 将节点按照升序排列插入到链表:

void vListInsert( List_t * const pxList, ListItem_t * const pxNewListItem );

将节点按照升序排列插入到链表

2.6 将节点从链表删除

UBaseType_t uxListRemove( ListItem_t * const pxItemToRemove );

将节点从链表删除

链表节点插入实验:

新建一个根节点和三个普通节点,然后将这三个普通节点按照节点
排序辅助值做升序排列插入到链表中。

/* 链表根节点初始化 */vListInitialise( &List_Test );/* 节点1初始化 */vListInitialiseItem( &List_Item1 );List_Item1.xItemValue = 1;/* 节点2初始化 */    vListInitialiseItem( &List_Item2 );List_Item2.xItemValue = 2;/* 节点3初始化 */vListInitialiseItem( &List_Item3 );List_Item3.xItemValue = 3;/* 将节点插入链表,按照升序排列 */vListInsert( &List_Test, &List_Item2 );    vListInsert( &List_Test, &List_Item1 );vListInsert( &List_Test, &List_Item3 );

在这里插入图片描述

仿真结果:

在这里插入图片描述
文章摘取自野火的课件,仅供个人学习记录。

  相关解决方案