• 【FreeRTOS】04 FreeRTOS 创建任务相关API函数


    任务创建和删除API函数

    函数描述
    xTaskCreate()使用动态的方法创建一个任务。
    xTaskCreateStatic()使用静态的方法创建一个任务。
    xTaskCreateRestricted()创建一个使用 MPU 进行限制的任务,相关内存使用动态内存分配。
    vTaskDelete()删除一个任务。

    xTaxkCreate()动态创建任务

    1.此函数用来创建一个任务,自动的从 FreeRTOS 的堆中分配任务堆栈,管理方式为我们前文提到选用的heap4.c
    2.宏 configSUPPORT_DYNAMIC_ALLOCATION 必须为 1

    函数原型

    BaseType_t xTaskCreate( TaskFunction_t pxTaskCode,//任务函数
    						const char * const pcName,//任务函数名称,字符串
    						const uint16_t usStackDepth,//堆栈深度
    						void * const pvParameters,//可能的其他参数
    						UBaseType_t uxPriority,//优先级
    						TaskHandle_t * const pxCreatedTask )//任务句柄
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    参数
    pxTaskCode: 任务函数。
    pcName: 任务名字,一般用于追踪和调试,任务名字长度不能超过configMAX_TASK_NAME_LEN。
    usStackDepth: 任务堆栈大小,注意实际申请到的堆栈是 usStackDepth 的 4 倍。其中空闲任务的任务堆栈大小为 configMINIMAL_STACK_SIZE。
    pvParameters: 传递给任务函数的参数。
    uxPriotiry: 任务优先级,范围 0~ configMAX_PRIORITIES-1。
    pxCreatedTask: 任务句柄,任务创建成功以后会返回此任务的任务句柄,这个句柄其实就是任务的任务堆栈。此参数就用来保存这个任务句柄。其他 API 函数可能会使用到这个句柄。

    xTaskCreateStatic()静态创建任务

    1.使用此函数创建的任务所需的RAM(任务堆栈也就是任务句柄,任务控制块)由用户自行实现(实际上就是声明定义一块内存)。
    2.宏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 )//控制块
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    参数
    pxTaskCode: 任务函数。
    pcName: 任务名字,一般用于追踪和调试,任务名字长度不能超过。configMAX_TASK_NAME_LEN。
    usStackDepth: 任务堆栈大小,由于本函数是静态方法创建任务,所以任务堆栈由用户给出,一般是个数组,此参数就是这个数组的大小。
    pvParameters: 传递给任务函数的参数。
    uxPriotiry: 任务优先级,范围 0~ configMAX_PRIORITIES-1。
    puxStackBuffer: 任务堆栈,一般为数组,数组类型要为 StackType_t 类型。
    pxTaskBuffer: 任务控制块。

    xTaskCreateRestricted() 创建任务

    此函数也是用来创建任务的,只不过此函数要求所使用的 MCU 有 MPU(内存保护单元),用此函数创建的任务会受到 MPU 的保护。其他的功能和函数 xTaxkCreate()一样。
    函数原型

    BaseType_t xTaskCreateRestricted( const TaskParameters_t * const pxTaskDefinition, 
    									TaskHandle_t * pxCreatedTask )
    
    • 1
    • 2

    参数
    pxTaskDefinition: 指向一个结构体 TaskParameters_t,这个结构体描述了任务的任务函数、堆栈大小、优先级等。此结构体在文件 task.h 中有定义。
    pxCreatedTask: 任务句柄。

    vTaskDelete() 删除任务

    删除一个用函数 xTaskCreate()或者 xTaskCreateStatic()创建的任务。由系统自动分配的内存会释放掉。用户分配给任务的内存需要用户自行释放。

  • 相关阅读:
    跨境电商亚马逊、eBay、Shopee、Lazada、速卖通、沃尔玛、阿里国际等平台,怎样进行自养号测评更安全?
    单片机C语言实例:32、实用密码锁
    基于低代码平台的疫情管理系统,源码交付更放心
    八、【React-Router5】路由组件传参
    git常用命令总结
    vue相关面试题:diff算法
    Vue父组件向子组件传递子组件实时更新
    vue3快速入门-生命周期
    【FDTD 反射、透射、吸收 软件操作】
    关于 Laravel Redis 多个进程同时取队列问题详解
  • 原文地址:https://blog.csdn.net/apythonlearner/article/details/133881736