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

任务创建和删除API函数

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

xTaxkCreate()动态创建任务

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

2.宏 configSUPPORT_DYNAMIC_ALLOCATION 必须为 1

函数原型

c 复制代码
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 倍。其中空闲任务的任务堆栈大小为 configMINIMAL_STACK_SIZE。
pvParameters: 传递给任务函数的参数。
uxPriotiry: 任务优先级,范围 0~ configMAX_PRIORITIES-1。
pxCreatedTask: 任务句柄,任务创建成功以后会返回此任务的任务句柄,这个句柄其实就是任务的任务堆栈。此参数就用来保存这个任务句柄。其他 API 函数可能会使用到这个句柄。

xTaskCreateStatic()静态创建任务

1.使用此函数创建的任务所需的RAM(任务堆栈也就是任务句柄,任务控制块)由用户自行实现(实际上就是声明定义一块内存)。

2.宏configSUPPORT_STATIC_ALLOCATION 定义为 1。
函数原型

c 复制代码
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 )//控制块

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

xTaskCreateRestricted() 创建任务

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

c 复制代码
BaseType_t xTaskCreateRestricted( const TaskParameters_t * const pxTaskDefinition, 
									TaskHandle_t * pxCreatedTask )

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

vTaskDelete() 删除任务

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

相关推荐
hairenjing11237 小时前
使用 Mac 数据恢复从 iPhoto 图库中恢复照片
windows·stm32·嵌入式硬件·macos·word
IT B业生9 小时前
51单片机教程(六)- LED流水灯
单片机·嵌入式硬件·51单片机
一枝小雨9 小时前
51单片机学习心得2(基于STC89C52):串口通信(UART)
单片机·嵌入式硬件·51单片机
IT B业生10 小时前
51单片机教程(一)- 开发环境搭建
单片机·嵌入式硬件·51单片机
u01015265811 小时前
STM32F103C8T6学习笔记2--LED流水灯与蜂鸣器
笔记·stm32·学习
海绵波波10712 小时前
Webserver(4.8)UDP、广播、组播
单片机·网络协议·udp
好想有猫猫12 小时前
【51单片机】串口通信原理 + 使用
c语言·单片机·嵌入式硬件·51单片机·1024程序员节
stm 学习ing14 小时前
C语言 循环高级
c语言·开发语言·单片机·嵌入式硬件·算法·嵌入式实时数据库
w微信1501350781215 小时前
小华一级 代理商 HC32F005C6PA-TSSOP20 HC32F005系列
c语言·arm开发·单片机·嵌入式硬件
北京迅为15 小时前
【北京迅为】《STM32MP157开发板嵌入式开发指南》-第七十八章 Qt控制硬件
linux·stm32·单片机·嵌入式硬件