任务创建和删除
动态方式创建任务
任务的任务控制块以及任务的栈空间所需的内存,均由freeRTOS从freeRTOS管理的堆中分配。此函数创建任务会立刻进入就绪态,由任务调度器调度运行。
任务的优先级,值越大,优先级越高。
函数
xTaskCreate();
//返回值为pdPASS,任务创建成功。
//返回值为errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY,任务创建失败
BaseType_t xTaskCreate( TaskFunction_t pxTaskCode, //指向任务函数的指针
const char * const pcName, //任务名字 最大长度configMAX_TASK_NAME_LEN(20)
const configSTACK_DEPTH_TYPE usStackDepth, //任务堆栈大小 字为单位
void * const pvParameters, //传递给任务函数的参数
UBaseType_t uxPriority, //任务优先级 范围 0 ~ configMAX_PRIORITIES(32)-1
TaskHandle_t * const pxCreatedTask ) //任务句柄,任务的任务控制块
示例
static void udpserver_sendto_client (void* argument){
}
static TaskHandle_t udpserver_tid;
#define UDPSERVER_THREAD_NAME "task name"
#define UDPSERVER_THREAD_STKSZ (configMINIMAL_STACK_SIZE * 4)
#define UDPSERVER_THREAD_PRIO (tskIDLE_PRIORITY + 3)
BaseType_t ret = xTaskCreate