FreeRTOS学习笔记——列表和列表项及其API函数讲解

news2024/10/5 22:22:01

目录

精华总结:

列表和列表项

架构脑图:

列表和列表项的简介

列表的结构

列表项

迷你列表项

 列表和列表项的关系

FreeRTOS 列表和列表项相关 API 函数

架构脑图:

列表和列表项相关 API 函数

函数 vListInitialise()

函数 vListInitialiseItem()

函数 vListInsertEnd()

函数 vListInsert()、

函数 uxListRemove()

架构总结:

 参考链接:


精华总结:

列表是存放任务的,列表有三种就绪、阻塞、挂起,没有运行态列表,列表的优先级为0-31,一个列表中可以存放多个任务,而任务是有优先级的,比如2优先级的任务存放在列表中,列表中的列表项就是任务,多个列表项之间通过链表连接(双向循环链表)

列表的特点:列表项间的地址非连续的,是人为的连接到一起的。列表项的数目是由后期添加的个数决定的,随时可以改变

rtos中任务的创建和删除是无时无刻存在的,因此链表这种数据结构很好地实现任务的管理并且实时

列表和列表项

架构脑图:

 

列表和列表项的简介

 

列表的结构

1、列表、列表项、末尾列表项=mini列表项=迷你列表项都是结构体。
2、列表包含列表项,也包含mini列表项

 

列表项

 

迷你列表项

 迷你列表项也是列表项,但迷你列表项仅用于标记列表的末尾和挂载其他插入列表中的列
表项,用户是用不到迷你列表项的

 列表和列表项的关系

1、先上后下,即上一个指针,下一个指针
2、升序排列,末尾列表项的数值最大,所以在最底,永远是它首先指向别人(别的列表项)
3、previous指针指向最后一个插入的,next指针指向第一个插入的,双向循环链表,两个环,手拉手
4、没有列表插入的时候,列表的数值=0,index指针指向末尾列表项,末尾列表项的两个指针指向自己

列表数值变为了2

FreeRTOS 列表和列表项相关 API 函数

架构脑图:

列表和列表项相关 API 函数

 

函数 vListInitialise()

1、初始化时,列表中只有 xListEnd,因此 pxIndex 指向 xListEnd
2、xListEnd 的值初始化为最大值,用于列表项升序排序时,排在最后
3、初始化时,列表中只有 xListEnd,因此上一个和下一个列表项都为 xListEnd 本身
4、初始化时,列表中的列表项数量为 0(不包含 xListEnd)

 

函数 vListInitialiseItem()

1、初始化时,列表项不属于任何一个列表,所以为空

函数 vListInsertEnd()

1、获取列表 pxIndex 指向的列表项
2、将待插入的列表项插入到 pxIndex所指向的列表项前面
3、更新待插入列表项的所在列表
4、更新列表中列表项的数量

函数 vListInsert()、

1、获取新插入的列表项的值
2、判断新插入的列表项数值大小

  • 如果数值等于末尾列表项的数值。就插入到末尾列表项前面
  • 否则遍历列表中的列表项,找到插入的位置

3、将列表项插入前面所找到的位置
4、更新待插入列表项所在列表
5、更新列表中列表项的数量

 

函数 uxListRemove()

1、获取所要移除的列表项的所在列表
2、从列表中移除列表项
3、如果 pxIndex 正指向待移除的列表项,将其指向带移除的上一个列表项
4、将待移除列表项的所在列表指针清空
5、列表的列表项数目减一
6、返回列表项移除后列表中列表项的数量

架构总结:

 

 参考链接:

https://blog.csdn.net/weixin_44639540/article/details/129029413

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1499998.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python3安装chrome,chromedriver亲测有效

客户用python写了个脚本,需要用到chrome和chromedriver扩展,结果说安装不了,各种报错,好吧我来研究一下。众所周知linux自带python2.7,根据报错查了一下资料发现是版本冲突导致的,系统自带2.7,代…

字节总部大楼私照流出,做他们的员工需要多牛!

在大厂上班究竟有多香? 大厂的工作环境,只有你想不到的硬核,没有它做不到的。 前段时间,字节跳动在北京办公室的一组私照在网上刷屏,看完我只有一个表情—— 抛开薪资和大厂光环不谈,就冲它的工作环境&…

基于JavaWeb开发的springboot游戏商城平台论文【附源码】

基于JavaWeb开发的springboot游戏商城平台论文 🍅 作者主页 央顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各种定制系统 &#…

算法---双指针练习-3(快乐数)

题目 1. 题目解析2. 讲解算法原理鸽巢原理 3. 编写代码 1. 题目解析 题目地址:点这里 2. 讲解算法原理 本题根据鸽巢原理是一定会有环的,最后要么无限循环1,要么碰到一个不为1的重复数继续循环 鸽巢原理 鸽巢原理(Pigeonhole P…

个性化服务:选择能提供定制化咨询的六西格玛公司

在全球化竞争加剧的商业版图中,每一家企业都在寻求提高效率和质量的方法。六西格玛咨询公司为这一追求提供了强有力的支持。选择正确地六西格玛培训公司合作,不仅能够帮助企业精简流程、提升产品质量,还能够助力构建内部持续改进的文化。如何…

MyBatis Oracle 批量插入数据

MyBatis Oracle 批量插入数据 1.需求描述2.实现方案2.1 循环 insert 插入2.2 insert all 插入2.3 insert union all 插入 3.分析总结 系统:Win10 JDK:1.8.0_351 IDEA:2022.3.3 1.需求描述 在一次项目中实施过程中,后台需要将地区…

基于H5的旅游攻略平台设计与实现

目 录 摘 要 I Abstract II 引 言 1 1 系统开发相关技术 3 1.1框架技术 3 1.1.1 SSM框架 3 1.1.2 SpringBoot框架 3 1.1.3 Spring框架 3 1.2开发语言 3 1.2.1 HTML 3 1.2.2 JAVA 4 1.2.3 JavaScript 4 1.3数据库 4 1.4本章小结 4 2 系统分析 5 2.1 可行性分析 5 2.2 功能需求分…

南京观海微电子---PCIe协议接口

1. PCIe引脚定义 PCI Express,官方简称PCIe,是计算机总线的一个重要分支, 插槽图片如下: 下表列出在边缘连接器上的PCI Express卡两侧的导线。在印刷电路板(PCB)的焊接侧为A侧,并且组件侧的B侧。PRSNT1# 和…

Windows Server 2012 R2 安装SNMP服务失败,提示:无法打开匿名级安全令牌。错误:0x8007050543

Windows Server 2012 R2 安装SNMP服务失败,提示:无法打开匿名级安全令牌。错误:0x8007050543 解决方法如下: 1、打开运行,输入:dcomcnfg.exe 2、依次进入:【组件服务】-【计算机】-【我的电脑】…

FMEA视角下的未来:拥抱变化,探索无限可能!

在快速发展的现代社会中,预测未来变得越来越具有挑战性。FMEA(失效模式与影响分析)作为一种预防性质量工具,虽然主要用于评估产品设计或过程中的潜在故障,但其核心理念——识别风险、预防失误,同样适用于我…

StarCoder 2:GitHub Copilot本地开源LLM替代方案

GitHub CoPilot拥有超过130万付费用户,部署在5万多个组织中,是世界上部署最广泛的人工智能开发工具。使用LLM进行编程辅助工作不仅提高了生产力,而且正在永久性地改变数字原住民开发软件的方式,我也是它的付费用户之一。 低代码/…

基于SSM框架的艺术交流平台设计与实现

目 录 摘 要 I Abstract II 引 言 1 1相关技术 3 1.1 jQuery技术简介 3 1.2 SSM框架简介 3 1.3 Bootstrap框架简介 3 1.4 ECharts框架简介 4 1.5 MVC设计模式简介 4 1.6 Ajax技术简介 4 1.7 MySQL数据库简介 4 1.8本章小结 4 2.1功能需求 5 2.2非功能需求 9 2.3本章小结 10 3系…

C++程序设计-第四/五章 函数和类和对象【期末复习|考研复习】

前言 总结整理不易,希望大家点赞收藏。 给大家整理了一下C程序设计中的重点概念,以供大家期末复习和考研复习的时候使用。 文章目录 前言第四章 函数 函数和类和对象4.1 说明带参数的宏与内联函数有什么不同4.2 全局变量和局部变量有什么区别是怎么实现的…

理解BS期权定价

开局放图 1.完整图示 开局一张图!全篇编的尽可能通俗化,有些地方避免不了用公式解释,内容的完整流程图示绘制如下,建议全篇读完后再看流程图。 2.背景知识 期权介绍 首先简单介绍下期权背景知识,期权(O…

Gitlab: PHP项目CI/CD实践

目录 1 说明 2 CI/CD 2.1 部署方式一:增量部署 2.1.1 目标服务器准备 2.2.2 Gitlab及Envoy脚本 2.2 部署方式二:镜像构建与部署 2.2.1 推送到私有化容器仓库 准备工作 脚本 要点 2.2.2 推送到hub.docker.com 准备工作 脚本 3 参考&#x…

Take-home questions——L3

Match the spatial domain image to the Fourier magnitude image 1—D 2—B 3—A 4—E 5—C

一分钟安装使用教程,无需服务器,一台电脑就可使用!全网最快速便捷使用Claude 3方法!

随着AI的应用变广,各类AI程序已逐渐普及,尤其是在一些日常办公、学习等与撰写/翻译文稿密切相关的场景,大家都希望找到一个适合自己的稳定可靠的ChatGPT软件来使用。 ChatGPT-Next-Web就是一个很好的选择。它是一个Github上超人气的免费开源…

如果用户被诱导添加了证书甚至根证书,那哪怕用了 HTTPS,使用中间人攻击就可以窃取用户所有信息了?

最近突然想到一个问题,HTTPS 真的足够安全吗?在一些对安全性要求比较高的项目里,能只依赖 HTTPS 来保证数据安全吗? 我们也用过fiddler 、whistle 等代理软件,也知道要能劫持流量后能看到请求和返回的内容需要添加证书…

ChatGPT 升级出现「我们未能验证您的支付方式/we are unable to authenticate」怎么办?

ChatGPT 升级出现「我们未能验证您的支付方式/we are unable to authenticate」怎么办? 在订阅 ChatGPT Plus 时,有时候会出现以下报错 : We are unable to authenticate your payment method. 我们未能验证您的支付方式。 出现 unable to a…

Apollo决策规划 - EM planner

旨在对b站老王所讲的百度Apollo - EM planner算法做浓缩版总结 0 决策规划背景 基于图搜索 优点: 可以得到全局层面最优解,适用于比较低维数的规划问题 缺点: 规划问题维数较高时,面临指数爆炸问题 基于采样 优点:…