FreeRTOS任务API函数的使用

这篇文章最后的demo工程可以在网盘中自行下载:
链接:https://pan.baidu.com/s/1o1U-niMKu0RuDAFio1nKMA 密码:ysev

本文是《ALIENTEK STM32F429 FreeRTOS 开发教程》第六章学习笔记
第一章笔记–FreeRTOS简介与源码下载
第二章笔记–FreeRTOS在STM32F4上移植
第三章笔记-FreeRTOS系统配置
第四章笔记-FreeRTOS中断分析
第四章笔记补充-FreeRTOS临界段代码
第五章笔记-FreeRTOS任务基础

1. 任务创建和删除API函数

1.1 xTaskCreate()

函数xTaskCreate()使用动态的方法创建一个任务,创建人物所需的RAM自动从FreeRTOS的堆中分配,宏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 ) 

pxTaskCode: 任务函数

pcName: 任务名字,任务名字长度不能超过 configMAX_TASK_NAME_LEN

usStackDepth: 任务堆栈大小,实际申请堆栈是usStackDepth的4倍(因为这里是uint16,而申请时的类型是uint32).空闲任务的堆栈大小为configMINIMAL_STACK_SIZE

pvParameters: 传递给任务函数的参数

uxPriotiry: 任务优先级,范围0~configMAX_PRIORITIES-1

pxCreatedTask: 任务句柄,任务创建成功以后返回此任务的任务句柄,任务句柄其实就是这个任务的任务堆栈。此参数就是用来保存这个任务句柄,其他API函数可能会使用到这个任务句柄。

返回值:

pdPASS: 任务创建成功

errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY: 任务创建失败,堆内存不足。

1.2 xTaskCreateStatic()

此函数与xTaskCreate()的功能相同,但是创建任务所需的RAM需要用户来提供,宏configSUPPORT_STATIC_ALLOCATION必须定义为1

函数原型:

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 )

pxTaskCode: 任务函数

pcName:任务名字,任务名字长度不能超过 configMAX_TASK_NAME_LEN

usStackDepth: 任务堆栈大小,由于此函数是用静态方法创建任务,所以任务堆栈由用户给出,一般是一个数组,此参数就是这个数组的大小

pvParameters: 传递给任务函数的参数

uxPriotiry: 任务优先级,范围0~configMAX_PRIORITIES-1

puxStackBuffer: 任务堆栈,一般为数组,类型为StackType_t

pxTaskBuffer: 任务控制块

返回值:

NULL: 任务创建失败,pxTaskBuffer或puxStackBuffer为NULL时会导致错误发生

其他值:任务创建成功,返回任务的任务句柄

1.3 VTaskDelete()

删除一个已经创建乐的任务,被删除的任务不再存在(不会进入运行态)。任务被删除后不能再使用此任务的句柄。

若是用动态方法创建,删除任务后,此任务之前申请的堆栈和控制块内存会在空闲任务中被释放掉,因此当调用函数vTaskDelete()删除任务以后必须给空闲任务一定的运行时间

若是静态方法创建任务,删除任务后用户分配给任务的内存需要用户自行释放掉。

函数原型:

void vTaskDelete( TaskHandle_t xTaskToDelete )

xTaskDelete: 要删除的任务的任务句柄

2. 任务创建和删除

2.1 任务相关声明:

//任务优先级
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值