FreeRTOS学习日记-3(列表和列表项)

2023-05-16

  1. 列表与列表项

列表结构体如下

typedef struct xLIST
{
listFIRST_LIST_INTEGRITY_CHECK_VALUE //检查列表完整性

configLIST_VOLATILE UBaseType_t uxNumberOfItems; //列表项数量

ListItem_t * configLIST_VOLATILE pxIndex; //列表索引号

MiniListItem_t xListEnd; //表示列表结束

listSECOND_LIST_INTEGRITY_CHECK_VALUE //检查列表完整性
} List_t;

列表项结构体如下(迷你列表项在列表项基础上减少了一些成员变量)

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;

2、列表与列表项相关函数

vListInitialise() :列表初始化函数,初始化时列表项数量为0,说明xListEnd没有被算入进去。

vListInitialiseItem() :列表项初始化函数,实际只对归属项初始化为NULL。

vListInsert() :列表项插入函数,其函数原型如下,无返回值。

变体vListInsertEnd()插入到列表项末尾。

void vListInsert( List_t * const pxList, //pxList: 列表项要插入的列表。
ListItem_t * const pxNewListItem )      //pxNewListItem: 要插入的列表项。

uxListRemove() :列表项删除函数,其函数原型如下,返回值为删除后的列表剩余列表项数目。

UBaseType_t uxListRemove( ListItem_t * const pxItemToRemove )//pxItemToRemove:要删除的列表项

列表项的删除只是将指定的列表项从列表中删除掉,并不会将这个列表项的内存给 释放掉!

listGET_OWNER_OF_NEXT_ENTRY():列表遍历函数,每调 用一次这个函数列表的 pxIndex 变量就会指向下一个列表项,并且返回这个列表项的 pxOwner 变量值。这个函数本质上是一个宏。用于多个同优先级的就绪任务中查找下一个要运行的任务。

3、实验拓展

上图为列表插入三个列表项,以上图作为参考,可得:

pxIndex指向的地址和xListEnd(迷你列表项,包含列表值、后一指针、前一指针)的地址相同。

即pxIndex指向了xListEnd!!!

相应的,列表(列表项)与列表项链接后,pxNext指向的就是后一个列表项原本地址,pxPrevious指向前一个列表项原本地址。

上图插入不是升序插入,当使用vListInsert()时,默认以xItemValue(列表项值)的升序方式插入。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FreeRTOS学习日记-3(列表和列表项) 的相关文章

  • DIY一个基于树莓派和Python的无人机视觉跟踪系统

    DIY 一个基于树莓派和Python的无人机视觉跟踪系统 无人机通过图传将航拍到的图像存储并实时传送回地面站几乎已经是标配 如果想来点高级的 在无人机上直接处理拍摄的图像并实现自动控制要怎么实现呢 xff1f 其实视觉跟踪已经在一些高端的消
  • windows环境下的Anaconda安装与OpenCV机器视觉环境搭建

    windows环境下的Anaconda安装与OpenCV机器视觉环境搭建 本文介绍win7和win10系统下通过Anaconda配置基于python语言的机器视觉编程环境 xff08 博主测试了两个系统下的安装基本相同 xff09 xff0
  • OpenCV—轮廓操作一站式详解:查找/筛选/绘制/形状描述与重心标注(C++版)

    OpenCV 轮廓操作一站式详解 xff1a 查找 筛选 绘制 形状描述与重心标注 C 43 43 版 轮廓 是定义或限定形状或对象的边或线 xff0c 是机器视觉中的常用的概念 xff0c 多用于目标检测 识别 等任务 关于OpenCV轮
  • 正太分布函数和反函数 标量值函数 (借鉴)

    标准正态分布函数 CREATE function dbo normcdf 64 p decimal 28 18 AS begin
  • 离散时间傅里叶变换(一)

    一 非周期信号的表示 xff1a 离散时间博里叶变换 1 1 离散时间傅里叶变换的导出 1 离散时间傅里叶变换对 要清楚推导过程 X ejw 称为离散时间傅里叶变换 xff0c 这一对式子就是离散时间傅里叶变换对 上式称为综合公式 xff0
  • HuskyLens摄像头系列 | 写给小学生看的视觉PID巡线算法

    Hello xff0c 大家好 xff0c 光天化日之下我又来撸狗了 距离上次撸狗已经过去了个把月时间了 xff0c 那么这次又有什么新惊喜呢 xff1f 先来看一下本期的演示视频吧 https www bilibili com video
  • 时空行为检测数据集 JHMDB & UCF101_24 详解

    文章目录 0 前言1 JHMDB1 1 基本情况1 2 数据准备以及标签详解 2 UDF101 242 1 基本情况2 2 数据准备与标签详解 3 数据集可视化代码 0 前言 现在常用的时空行为检测数据集只有AVA JHMDB UCF101
  • Lock与RLock的区别

    目录 往期推荐介绍区别一区别二 往期推荐 Python多线程的使用 Python线程池的使用 Python多线程的安全问题 B站同名 有温度的算法 已经上线 想观看视频讲解的同学 点击此处直达B站 介绍 在上节中为大家说明了线程访问临界资源
  • ROS 小技巧 - OpenCV4 与 CV_Bridge 配合使用

    1 现象 ROS默认的Python版本是3 3 xff0c 但我系统安装的是OpenCV4 5 如果直接在pkg中使用cv bridge和opencv4 5就会有问题 会有一些undefined reference问题 参考资料 xff1a
  • 【做题系统】后端设计

    目录 一 设计思路 1 项目背景 2 技术栈选择 二 系统设计 1 系统结构图 2 项目结构 3 数据建模 4 数据流图 5 主要流程图 三 问题及解决办法 1 实现安全登录 访问 2 数据库中的信息安全问题 3 Mybatis plus如
  • C/C++字符串查找函数

    C C 43 43 string库 xff08 string h xff09 提供了几个字符串查找函数 xff0c 如下 xff1a memchr在指定内存里定位给定字符strchr在指定字符串里定位给定字符strcspn返回在字符串str
  • ssh命令-manpage

    SSH Section User Commands 1 Index Return to Main Contents BSD mandoc NAME ssh OpenSSH SSH 客户端 远程登录程序 总览 SYNOPSIS ssh l l
  • 一小时做出Java实战项目——飞翔的小鸟

    学姐又来啦 xff0c 今日分享一个Java实战项目 飞翔的小鸟 相信大家都玩过这个游戏 xff0c 这个游戏陪伴了我们整整一个童年 xff0c 是我们青春的回忆 飞翔的小鸟 xff0c 游戏中玩家只需通过点击方向键操纵让小鸟避开绿色管道等
  • 搭建本地仓库源

    一 如何搭建仓库源 之前讲了定制ISO的方法 xff1a 使用chroot定制系统 xff0c 但有时候我们想自定义的安装包不在上游的仓库源中 xff0c 在我们本地应该怎么办呢 xff1f 如果我们将deb包拷贝到iso目录再安装有点过于
  • 节点操作案例

    1 下拉菜单 xff08 仿微博 xff09 lt DOCTYPE html gt lt html lang 61 34 en 34 gt lt head gt lt meta charset 61 34 UTF 8 34 gt lt me
  • document获取对象的三种三方法

    Document对象中有几个常用的方法 xff0c 我们在Dom简介中提到过 说到获取JavaScript对象的方法 xff0c 最常用的可能就是getElementById了 xff0c 它是Document中最常用的获取对象的方式之一
  • 程序员,最关键的跨越是什么?做到了月薪可能翻上几番~

    黑马程序员视频库 播妞微信号 xff1a boniu236 传智播客旗下互联网资讯 学习资源免费分享平台 作为一名程序员 xff0c 最关键的跨越是什么 xff1f 从普通程序员进阶为熟练开发者 xff0c 从熟练开发者跃升到技术专家或架构
  • 黑马程序员:3分钟带你读懂C/C++学习路线

    随着互联网及互联网 43 深入蓬勃的发展 xff0c 经过40余年的时间洗礼 xff0c C C 43 43 俨然已成为一门贵族语言 xff0c 出色的性能使之成为高级语言中的性能王者 而在今天 xff0c 它又扮演着什么样重要的角色呢 x
  • 数据归一化

    原文链接 xff1a 从公式出发 xff1a 什么是模型收敛的有效方法 xff1f 大家好 xff0c 我是泰哥 数据归一化在模型收敛中起着至关重要的作用 xff0c 从经典机器学习到深度学习的数据归一化方法是如何一步步演变的呢 xff1f
  • 【Python面试】 说说Python变量、函数、类的命名规则?

    最近公众号新增加了一个栏目 xff0c 就是每天给大家解答一道Python常见的面试题 xff0c 反正每天不贪多 xff0c 一天一题 xff0c 正好合适 xff0c 只希望这个面试栏目 xff0c 给那些正在准备面试的同学 xff0c

随机推荐

  • ​LeetCode刷题实战46:全排列

    算法的重要性 xff0c 我就不多说了吧 xff0c 想去大厂 xff0c 就必须要经过基础知识和业务逻辑面试 43 算法面试 所以 xff0c 为了提高大家的算法能力 xff0c 这个公众号后续每天带大家做一道算法题 xff0c 题目就从
  • Android硬件访问服务-Service

    Android有四大组件 xff1a 一 Activity 二 Service 三 Broadcast Receiver 四 Content Provider Service是Android中一个类 xff0c 它是Android四大组件之
  • android6.0第三方APP获得设备节点的访问权限

    之前使用android4 4的系统进行开发时 system app xff08 系统自带APP xff09 目录下的 app 可以直接访问 dev 目录下的设备节点 xff0c Android 5 0 以后 xff0c 因为采取了 SEAn
  • U-boot取消或修改启动延时bootdelay

    在我们的实际项目中都希望uboot尽量能够快速启动 xff0c 这就涉及到uboot的裁剪工作 xff0c 由于裁剪的工作量和内容比较多 xff0c 这里暂不描述 但是uboot有个启动延时bootdelay xff0c 在我们进入linu
  • uboot启动分析第一阶段(start.S)

    前面分析了启动脚本 Makefile mkconfig xff0c 接下来就是uboot的start S这个启动代码了 xff0c 下面是本章的平台介绍 xff1a 单板 xff1a 迅为4412开发板 Exynos 4412 SDRAM
  • Android使用串口(基于android-serialport-api)

    运行平台 xff1a CPU xff1a 全志V40 Android版本 xff1a 6 0 1 关于安卓设备上使用串口 xff0c 谷歌官方在github上有提供代码实例 xff0c 里面有JNI的代码和串口API的java文件 xff0
  • FreeRTOS-启动任务调度器源码分析

    本章基于FreeRTOS的启动任务调度器源码分析 xff0c 后续将会上传其它我对FreeRTOS的源码分析过程及理解 xff0c 首先来认识一下任务调度器 任务调度器 xff1a 任务调度器主要用于实现任务的切换 xff0c 任务并不是我
  • FreeRTOS-任务创建源码分析

    任务创建是FreeRTOS系统启动的第一个步骤 xff0c 前面在启动调度器的时候先创建了空闲任务 xff0c 然后再由调度器跳到任务里面去执行 任务创建函数里面做了很多的工作 xff0c 先会为任务堆栈和任务控制块分配内存并初始化它们 x
  • FreeRTOS-任务通知源码分析

    任务通知可用来代替信号量 消息队列 事件标志位 xff0c 而且使用任务通知的形式效率会更高 xff0c 它不需要像信号量那样创建队列和操作队列 xff0c 任务通知的存储变量来自任务控制块中 xff0c 当宏 configUSE TASK
  • Anaconda出现Collecting package metadata (current_repodata.json): failed错误

    安装包时出现这个错误 xff0c 个人怀疑是梯子使用出错 网上很多教程是换源等均没有解决问题 最后解决方法 xff1a 1 卸载clash for Windows xff08 不确定这一步是不是必须的 xff09 2 直接删除C Users
  • FreeRTOS-空闲任务、低功耗源码分析

    FreeRTOS在启动任务调度时会自动创建一个空闲任务 xff0c 空闲任务主要在系统没有其它任务或任务都处于挂起状态时执行 xff0c 它被系统设置为最低优先级 xff0c 不会去抢占其它高优先级的任务 xff0c 从而既能保证系统总有至
  • FreeRTOS-内存管理源码分析

    FreeRTOS 总共提供了5种内存分配方法 xff1a heap 1 c heap 2 c heap 3 c heap 4 c heap 5 c 这五种分配方式各有各的优势 xff0c 用户可根据应用情况按需使用 xff0c 在分析源码之
  • 在线词典项目进展近况

    作者 xff1a 王盛武 最近BLOG虽然没更新 xff0c 但项目正在紧张进行当中 xff0c 大家都在做着自己的任务 xff0c 大家都有一个信念 xff0c 要把事情做把 xff0c 不会半图而废 我主要负责的是RIA前端编写和Web
  • 基于HTML5实现的在线3D虚拟试衣系统(试衣间)解决方案

    3D虚拟试衣系统的使用场景主要是在线电商或数字营销 xff0c 为品牌服装 服饰 饰品添加高端3D虚拟购物动效 xff0c 提升用户感官体验和交互体验 要研发这样的在线系统 xff0c 有2个方向 xff0c 一个是使用Flash或Unit
  • 2011移动开发者大会亮点之一:六大精彩主题论坛抢鲜看

    2011中国移动开发者大会将是2011年度中国最大规模的移动盛事 本次大会全面覆盖软件应用和服务 平台 运营商 终端 芯片等移动产业链各个领域 xff0c 与此同时 xff0c 专注于产业链中最活跃的因素 应用软件的研发 创新与商业模式 x
  • IT毕业生给学弟学妹们的真心话——离校座谈记录

    活动 xff1a 2009级毕业生离校前座谈 地点 xff1a 烟台大学计算机学院4409学业指导工作室 组织 xff1a 烟台大学CSDN高校俱乐部 时间 xff1a 2013年6月1日 上午8 30 参加人员 xff1a 主持人 xff
  • activemq的几种基本通信方式总结

    简介 在前面一篇文章里讨论过几种应用系统集成的方式 xff0c 发现实际上面向消息队列的集成方案算是一个总体比较合理的选择 这里 xff0c 我们先针对具体的一个消息队列Activemq的基本通信方式进行探讨 activemq是JMS消息通
  • 生活就是工作学习锻炼身体

    多做事情多学习 少浪费时间 业精于勤荒于嬉 xff0c 行成于思而毁于随
  • Windows下Gvim7.1的字体和颜色配置

    首先在windows下安装Gvim7 1 然后再gvim里的 编辑菜单里 选择字体 里选择一种字体一般编程序用Courier New 字体 选择字号 xff0c 并且在 编辑菜单里选择一种 自己喜欢的 配色方案 按ESC进入命令模式然后输入
  • FreeRTOS学习日记-3(列表和列表项)

    列表与列表项 列表结构体如下 typedef struct xLIST listFIRST LIST INTEGRITY CHECK VALUE 检查列表完整性 configLIST VOLATILE UBaseType t uxNumbe