> 文章列表 > FreeRTOS 任务相关 API 函数

FreeRTOS 任务相关 API 函数

FreeRTOS 任务相关 API 函数

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()无返回值。