1. 任务控制块(Task Control Block,TCB)
任务控制块 是FreeRTOS内核用于管理任务的关键数据结构。它包含了任务执行所需的各种信息。每个任务对应一个唯一的TCB。
主要作用:
- 存储任务状态:TCB包含任务的当前状态信息,如运行、就绪、阻塞等状态。
- 任务栈指针:保存任务栈的指针,任务切换时用来恢复任务的栈。
- 任务优先级:保存任务的优先级,调度器根据优先级决定任务的执行顺序。
- 任务名:有助于调试和监控。
- 任务执行时间统计:用于任务执行时间统计和调试。
- 任务句柄:每个任务的TCB通常也存储一个句柄,用于在其他地方引用这个任务。
结构示例:
typedef struct tskTaskControlBlock
{
volatile StackType_t *pxTopOfStack; /* 栈顶指针 */
ListItem_t xStateListItem; /* 状态列表项 */
ListItem_t xEventListItem; /* 事件列表项 */
UBaseType_t uxPriority; /* 任务优先级 */
StackType_t *pxStack; /* 任务栈 */
ch