FreeRTOS链表总结

FreeRTOS总结

裸机系统和多任务系统区别
FreeRTOS链表总结_第1张图片
FreeRTOS中存在着大量的基础数据结构列表和列表项的操作,
单向链表
FreeRTOS链表总结_第2张图片
单向链表携带信息
FreeRTOS链表总结_第3张图片
上面这种做法用的少,通常是节点里面只包含一个用于指向下一个节点的指针。要通过链表存储的数据内嵌一个节点即可。
FreeRTOS链表总结_第4张图片
FreeRTOS链表总结_第5张图片
链表操作
链表最大的作用就是通过节点把离散的数据链接在一起,组成一个表。链表常规的操作就是节点的插入和删除。通常一条链表我们会人为地规定一个根节点,这个根节点称为生产者。通常根节点还会有一个节点计数器,用于统计整条链表的节点个数。
FreeRTOS链表总结_第6张图片
双向链表与单向链表的区别就是节点中有两个节点指针,分别指向前后两个节点,其他完全一样
FreeRTOS链表总结_第7张图片
链表与数组对比
FreeRTOS链表总结_第8张图片
链表是通过节点把离散的数据链接成一个表,通过对节点的插入和删除操作从而实现对数据的存取。而数组是通过开辟一段连续的内存来存储数据,数组的每个成员对应链表的节点,成员和节点的数据类型可以是标准的C类型或者是用户自定义的结构体。数组有起始地址和结束地址,而链表是一个圈,没有头和尾之分,但是为了方便节点的插入和删除操作会人为的规定一个根节点。
定义链表节点数据结构
FreeRTOS链表总结_第9张图片
链表节点初始化
FreeRTOS链表总结_第10张图片
链表节点ListItem_t总共有5个成员,但是初始化时候只需要将pvContainer初始化为空即可,表示该节点还没有插入到任何链表。
FreeRTOS链表总结_第11张图片
定义链表根节点数据结构
FreeRTOS链表总结_第12张图片在这里插入图片描述
链表节点计数器,用于表示链表下还有多少个节点,根节点除外
链表节点索引指针,用于遍历节点。
链表最后一个节点,链表首尾相连的是一个圈,链表的最后一个节点,实际上也是链表的第一个节点我们成为生产者,该生产者的数据类型是一个精简的节点
FreeRTOS链表总结_第13张图片
相关函数
链表节点初始化
在这里插入图片描述
将节点插入到链表尾部
在这里插入图片描述
将节点按照升序排列插入到链表
在这里插入图片描述
将节点从链表删除
在这里插入图片描述
FreeRTOS链表总结_第14张图片
FreeRTOS链表总结_第15张图片

你可能感兴趣的:(stm32,freertos)