当前位置: 首页 > news >正文

FreeRTOS列表和列表项

一:列表与列表项定义

FreeRTOS列表和列表项是FreeRTOS的一个数据结构,类似于链表。

FreeRTOS大量使用了列表和列表项,它是FreeRTOS中的基石,方便我们学习FreeRTOS的源码和原理。

列表被用于跟踪FreeRTOS的任务,列表结构为List,再文件list.h中定义

二.列表项初始化

三.列表项相关API函数

四.列表实验

1.建立列表任务

我使用的是动态任务

2.新建列表和列表项

列表初始化

在list.c中找到初始化列表函数,void vListInitialise( List_t * const pxList );添加到列表任务中

去list.h中找列表结构体,将List_t复制,去,main中建立结构体

将新建的结构体名添加到void vListInitialise( List_t * const pxList );参数中

建立列表项

去初始化列表项(相当于节点),也在list.c中找到函数void vListInitialiseItem( ListItem_t * const pxItem ),在main中建立三个列表项

列表项也需要去定义,在list.h中,复制到main中建立

建立后参数放到相应函数中

打印地址看关系

 列表项连起来之后是一个环形列表,排序是根据器直径,所以要去赋值。此时还没有建立起来,先把其地址打出来看看

此时没有建立列表,所以ListItem1、2、3地址是和索引地址不一样的

插入列表项

插入函数在list.c    void vListInsert( List_t * const pxList,ListItem_t * const pxNewListItem )

第一个参数列表 ,第二个参数新的列表项

两个参数共同决定往哪个列表里插入哪个列表项

插入之后的关系图

打印相关地址看关系

列表项的索引TestList->pxIndex 没有改动是指向迷你列表项的

由图知道,插入列表项一后迷你列表项的下一个地址是列表项1,列表项1的下一个地址是迷你列表项。列表项1的前一个是迷你列表项,迷你列表项的前一个是列表项1.由此可以知道他们是环状的,两个人手拉手。


http://www.mrgr.cn/news/93266.html

相关文章:

  • 审批流AntV框架蚂蚁数据可视化X6饼图(注释详尽)
  • win11不能访问到共享文件
  • 多线程-线程池
  • AI 实战5 - pytorch框架实现face检测
  • 在S32K3上实现SOC的神经网络算法的可行性
  • io函数 day3 文件io与系统函数
  • 一篇文章讲解清楚ARM9芯片启动流程
  • ​Unity插件-Mirror使用方法(八)组件介绍(​Network Behaviour)
  • K8s 1.27.1 实战系列(一)准备工作
  • FastExcel/EasyExcel简介以及源码解析
  • 尚庭公寓项目记录
  • AD学习-最小系统板,双层
  • Ubuntu 22.04安装NVIDIA A30显卡驱动
  • Dify+DeepSeek | Excel数据一键可视化(创建步骤案例)(echart助手.yml)(文档表格转图表、根据表格绘制图表、Excel绘制图表)
  • VIA的寄生电感和Stub对高速信号的影响
  • 单细胞分析(21)——SCENIC 分析流程(singularity容器版)
  • RT-thread的MultiButton按键库的使用
  • 记录一次Spring事务失效导致的生产问题
  • 【DeepSeek 】学习编程的利器:DeepSeek 使用指南
  • 由麻省理工学院计算机科学与人工智能实验室等机构创建低成本、高效率的物理驱动数据生成框架,助力接触丰富的机器人操作任务