FreeRTOS 中用于创建和删除任务的 API 函数如下表所示:
1. 函数 xTaskCreate()
此函数用于使用动态的方式创建任务,任务的任务控制块以及任务的栈空间所需的内存, 均由 FreeRTOS 从 FreeRTOS 管理的堆中分配,若使用此函数,需要在 FreeRTOSConfig.h 文件 中将宏 configSUPPORT_DYNAMIC_ALLOCATION 配置为 1。此函数创建的任务会立刻进入就 绪态,由任务调度器调度运行。函数原型如下所示:
BaseType_t xTaskCreate(
TaskFunction_t pxTaskCode,
const char * const pcName,
const configSTACK_DEPTH_TYPE usStackDepth,
void * const pvParameters,
UBaseType_t uxPriority,
TaskHandle_t * const pxCreatedTask
);
函数 xTaskCreate()的形参描述,如下表所示:
函数 xTaskCreate()的返回值,如下表所示:
2. 函数 xTaskCreateStatic()
此函数用于使用静态的方式创建任务,任务的任务控制块以及任务的栈空间所需的内存, 需 要 由 用 户 分 配 提 供 , 若 使 用 此 函 数 , 需 要 在 FreeRTOSConfig.h 文 件 中 将 宏
configSUPPORT_STATIC_ALLOCATION 配置为 1。此函数创建的任务会立刻进入就绪态,由任 务调度器调度运行。函数原型如下所示:
TaskHandle_t xTaskCreateStatic(
TaskFunction_t pxTaskCode,
const char * const pcName,
const uint32_t ulStackDepth,
void * const pvParameters,
UBaseType_t uxPriority,
StackType_t * const puxStackBuffer,
StaticTask_t * const pxTaskBuffer
);
函数 xTaskCreateStatic()的形参描述,如下表所示:
函数 xTaskCreateStatic()的返回值,如下表所示:
3. 函数 xTaskCreateRestricted()
此函数用于使用动态的方式创建受 MPU 保护的任务,任务的任务控制块以及任务的栈空 间所需的内存,均由 FreeRTOS 从 FreeRTOS 管理的堆中分配,若使用此函数,需要将宏
configSUPPORT_DYNAMIC_ALLOCATION 和宏 portUSING_MPU_WRAPPERS 同时配置为 1。 此函数创建的任务会立刻进入就绪态,由任务调度器调度运行。函数原型如下所示:
BaseType_t xTaskCreateRestricted(
const TaskParameters_t * const pxTaskDefinition,
TaskHandle_t * pxCreatedTask
);
函数 xTaskCreateRestricted()的形参描述,如下表所示:
函数 xTaskCreateRestricted()的返回值,如下表所示:
4. 函数 xTaskCreateRestrictedStatic()
此函数用于使用静态的方式创建受 MPU 保护的任务,此函数创建的任务的任务控制块以 及任务的栈空间所需的内存,需要由用户自行分配提供,若使用此函数,需要将宏
configSUPPORT_STATIC_ALLOCATION 和宏 portUSING_MPU_WRAPPERS 同时配置为 1。此 函数创建的任务会立刻进入就绪态,由任务调度器调度运行。函数原型如下所示:
BaseType_t xTaskCreateRestrictedStatic(
const TaskParameters_t * const pxTaskDefinition,
TaskHandle_t * pxCreatedTask
);
函数 xTaskCreateRestrictedStatic()的形参描述,如下表所示:
函数 xTaskCreateRestrictedStatic()的返回值,如下表所示:
5. 函数 vTaskDelete()
此函数用于删除已被创建的任务,被删除的任务将被从就绪态任务列表、阻塞态任务列表、 挂起态任务列表和事件列表中移除,要注意的是,空闲任务会负责释放被删除任务中由系统分 配的内存,但是由用户在任务删除前申请的内存,则需要由用户在任务被删除前提前释放,否 则将导致内存泄露。若使用此函数,需要在FreeRT
OSConfig.h文件中将宏INCLUDE_vTaskDelete
配置为 1。函数原型如下所示:
void vTaskDelete(TaskHandle_t xTaskToDelete);
函数 vTaskDelete()的形参描述,如下表所示:
函数 vTaskDelete()无返回值。