freertos中的task可以任务是一个线程,它是freertos系统调度的一个单位,使用xTaskCreate() 可以创建出task,函数原型如下
BaseType_t xTaskCreate(TaskFunction_t pxTaskCode,
const char *const pcName,
const uint16_t usStackDepth,
void *const pvParameters,
UBaseType_t uxPriority,
TaskHandle_t *const pxCreatedTask) PRIVILEGED_FUNCTION;
第一个参数是task的入口函数;第二个参数是task 的名称,第三个参数是task的栈大小(单位不一定是字节,有些平台是4字节对齐,所以栈大小为usStackDepth * 4 字节),第四个参数是传到入口函数的参数,第五个参数是task的优先级,数值越大优先级越高(idle 的优先级是0),第六个参数是指向创建出来task的指针,可用于销毁该task。
下面是一个简单的示例
#include <stdio.h>
#include <string.h>
#include "FreeRTOS/FreeRTOS.h"
#include "FreeRTOS/task.h"
#include "FreeRTOS/queue.h"
#define DEMO_TASK_NAME "demo_task" // 任务名称
#define DEMO_TASK_PRIORITY (tskIDLE_PRIORITY + 12 ) // 任务优先级
#define DEM