13.1.1 列表

更新于 2026年10月10日 版权声明
13.1.1 列表

1.列表的数据结构

列表是FreeRTOS的数据结构,在概念上与链表类似,可以用列表来跟踪FreeRTOS中的任务运行状态。在“list.h”文件中定义了一个List_t结构体表示列表,其定义如下。

图示

各语句功能如下。

①和⑤用来检查列表完整性。

②uxNumberOfItems:用来记录列表中列表项的数量。

③pxIndex:用来记录当前列表项的索引号,用于遍历列表。

④xListEnd:用来表示列表结束,并指向迷你列表项。

列表结构示意图如图13.1所示。

一个任务通常有4种状态,即运行态、阻塞态、就绪态和挂起态。4个状态也就形成了4个列表,每个列表中存放着不同状态的任务。不同列表之间的切换就构成了一个任务在不同状态之间的切换,同一个列表内的不同列表项的排列,就构成了同一种状态中不同优先级的任务之间的排列顺序,即谁先运行、谁后运行。(https://www.daowen.com)

图示

图13.1 列表结构示意图

2.FreeRTOS中重要的列表

在“task.c”文件中定义了几个重要的全局性列表,其定义如下。

图示

各列表的功能如下。

①pxReadyTasksLists[configMAX_PRIORITIES]:基于优先级的就绪任务列表。

②pxDelayedTaskList:任务阻塞列表。

③xPendingReadyList:任务挂起列表。

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)