FreeRTOS中创建任务需要哪些基本参数?
时间:2026-11-12 来源:华清远见
FreeRTOS 中创建任务最常用的动态创建 API 是 xTaskCreate()。它从 FreeRTOS 管理的堆中为任务控制块(TCB)和任务栈分配内存,完成任务的初始化并加入就绪队列。本文整理该函数的六个基本入参、返回值、最小代码示例以及常见使用注意事项,供嵌入式开发时快速查阅。
一、函数原型
xTaskCreate() 的函数原型如下,共包含六个参数:

二、六个基本参数
各参数的类型与作用如下表所示。

三、返回值
xTaskCreate() 的返回值为 BaseType_t 类型:
pdPASS:任务创建成功。
errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY:任务创建失败,通常是 FreeRTOS 堆(configTOTAL_HEAP_SIZE)空间不足。
四、最小可用示例
下面示例创建一个以 500 ms 周期翻转 LED 的任务:

五、常见注意事项
栈大小的单位是字(word)而不是字节:Cortex-M(32 位)上 1 字 = 4 字节,填 512 实际只有 2 KB。递归深、使用 printf 或浮点运算时尤其要留足余量。
优先级数值越大越先执行:0 是空闲任务(Idle Task)优先级,用户任务一般从 tskIDLE_PRIORITY + 1 开始。
任务函数不能 return:正常应写成 while(1) 死循环;若要主动退出,必须调用 vTaskDelete(NULL) 自杀,否则会触发异常。
动态创建依赖 FreeRTOS 堆:需要在 FreeRTOSConfig.h 中开启 configSUPPORT_DYNAMIC_ALLOCATION = 1,TCB 与栈都从 configTOTAL_HEAP_SIZE 指定的堆中分配。
不想使用动态堆时可改用静态创建版本 xTaskCreateStatic(),由用户自行提供 TCB 与栈数组,内存完全可控,但参数更多。

