Task
FreeRTOS中Task为调度单位,是独立的运行实例,具有自己的堆栈空
间。Task通常是无限循环执行,不允许以任何方式退出实现函数(return
语句或者运行结束)。如果Task真的不需要了,需要显式的调用delete
函数结束Task运行
任务实体
就是一个普通的函数并拥有自己的上下文环境以及栈空间
1. static 变量被共享
2. 如果突破死循环,则必须在到达该函数末尾之前删除该任务,即使用vTaskDelete(NULL)
补充:vTaskDelete(NULL) 表示要删除的任务是调用(this)任务*/
任务的状态转换
特殊任务-Idle
FreeRTOS中在调用vTaskStartScheduler()函数的时候创建了Idle任务,Idle任务的优先级是0
(表示优先级最低,可以被所有其他任务抢占)
函数解释-vTaskCreate
// task. h
BaseType_t xTaskCreate( TaskFunction_t pvTaskCode, //任务实体函数
const char * const pcName, // 任务名称
configSTACK_DEPTH_TYPE usStackDepth, //任务栈大小
void *pvParameters, //任务实体函数的参数
UBaseType_t uxPriority, //任务优先级
TaskHandle_t *pxCreatedTask //任务句柄
);