FreeRTOS 任务相关 API 函数

FreeRTOS提供了多种任务创建和删除的函数,包括xTaskCreate用于动态创建任务,xTaskCreateStatic用于静态创建任务,xTaskCreateRestricted和xTaskCreateRestrictedStatic用于创建受MPU保护的任务,而vTaskDelete用于删除任务。这些函数涉及到任务的内存分配、优先级、任务控制块和栈空间管理,以及内存回收策略。
摘要由CSDN通过智能技术生成

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值