从零开始,教你写FreeRTOS双向链表

129 篇文章 32 订阅
45 篇文章 3 订阅

摘要:前几天给大家讲了单向链表,今天再结合FreeRTOS的链表源码,说一下双向链表。

注:链表项就是节点,节点就是链表项,都是指的一个东西,叫啥都无所谓。

一、定义链表结构体

二、定义mini节点项

迷你节点也是节点,但迷你节点仅用于标记链表的末尾和挂载其他插入链表中的节点,用户是用不到迷你节点的,链表头节点和普通节点可以不一样。

 下面这个头即使链表定义,也是链表头,链表头节点和普通节点可以不一样。

三、定义节点

节点在FreeRTOS中叫做链表项。

 

四、初始化链表

初始化链表就是给链表的头结点各个参数赋值。

 

                                                         左右两个图意思都一样

五、初始化节点

 

 

六、将节点插入到链表的尾部

此函数就是将待插入的列表项插入到列表 pxIndex 指向列表项的前面,要注意的时,pxIndex 不一定指向 xListEnd,而是有可能指向列表中任意一个列表项。

我手画一张图来解释吧!

 

七、链表节点插入并排序

 在将待插入列表项插入列表之前,会前遍历列表,找到待插入列表项需要插入的位置。待插入列表项需要插入的位置,是依照列表中列表项的值,按照升序排序确定的。

八、删除链表节点

 要删除节点,首先就必须要找到节点。

 

需要注意的是,函数 uxListRemove()移除后的列表项,依然于列表有着单向联系,即移除后列表项中用于指向上一个和下一个列表项的指针,依然指向列表中的列表项。

九、实例

 然后随便找个32的代码,用keil仿真试一试。

 仔细看一下这张图:

这个其实就是FreeRTOS的链表源码,是不是很简单?

工程下载源码:

请进学习技术大群领取资料包:607439754

其实这个工程是一个普通的裸机例程,只是加入了FreeRTOS的链表源码,建议大家自己动手试一下,深入理解链表。因为要想学好任何一个RTOS,必须掌握的基础知识就是链表和队列!

【网盘免费资料包,需要的自行领取】:

嵌入式物联网 22个STM32项目、大赛作品,【华清远见发放资料包】http://makerschool.mikecrm.com/f4wjYBB【下方分享一些免费教程资料,感兴趣的可以看一下】:

FreeRTOS内核源码深度剖析

智能插排项目:FreeRTOS+LwIP

操作系统FreeRTOS

一节课带你入门FreeRTOS

( STM32+LoRa打造LPWA物联网系统)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值