
任务的基石typedef struct tskTaskControlBlock { volatile StackType_t * pxTopOfStack; /* 必须是第一个成员:上下文切换时保存/恢复栈顶 */ ListItem_t xStateListItem; /* 挂到就绪/阻塞/挂起列表,标识任务状态 */ ListItem_t xEventListItem; /* 挂到事件列表(队列/信号量等) */ UBaseType_t uxPriority; /* 任务优先级,调度依据 */ StackType_t * pxStack; /* 栈起始地址,用于释放内存/溢出检查 */ char pcTaskName[ configMAX_TASK_NAME_LEN ]; /* 任务名,调试用 */ } tskTCB;任务的优先级FreeRTOSConfig.h#define configMAX_PRIORITIES 5共configMAX_PRIORITIES个, 默认是5,那优先级就是0--4空闲任务的优先级是0,优先级最低。任务的切换两种情况1. 基于滴答定时器中断2