#include <FreeRTOS.h>
#include <task.h>
#include <stdio.h>
TaskHandle_t h1;
void vTask1(void *pv)
{
(void)pv; /* 防止编译器警告:未使用参数 pv */
for (;;) // 无限循环,FreeRTOS 任务绝不能直接 return
{
printf("Hello 1\n");
vTaskDelay(100); //freertos专用定时
}
}
void main(void)
{
BaseType_t rt = xTaskCreate(vTask1, "Task1", configMINIMAL_STACK_SIZE, NULL, 1, &h1);
vTaskStartScheduler();//启动 FreeRTOS 调度器
}
参数说明:
1. vTask1 - 任务函数指针
2. "Task1" - 任务名(调试用,最大长度由 configMAX_TASK_NAME_LEN 决定)
3. configMINIMAL_STACK_SIZE
- 任务栈大小(单位是“字”,不是字节)
configMINIMAL_STACK_SIZE 是 FreeRTOS 推荐的最小栈
对于 printf 这类函数,实际项目中可能需要更大
4. NULL - 传给任务函数的参数(这里不需要,传 NULL)
5. 1 - 任务优先级(数字越大,优先级越高) 0 是最低优先级
6. &h1 - 任务句柄,用于后续操作该任务
BaseType_t rt -返回值:pdPASS / errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY