一、动态创建任务
1、将宏configSUPPORT_DYNAMIC_ALLOCATION
2、创建任务,并配置入口参数:xTaskCreate( )
任务创建后立马进入就绪态,并且开启任务调度对任务运行:vTaskStartScheduler();
3、编写任务函数:函数名要和任务函数的指针相同
注:一些小知识点:
①任务句柄就是TCB的指针
②临界区保护:创建一个区域,在这个区域内的任务都不会进入运行态,会被打断执行。
进入临界区:taskENTER_CRITICAL( );
退出临界区:taskEXIT_CRITICAL( );
二、任务删除
1、使用删除任务函数,将宏INCLUDE_vTaskDelete配置成1
2、vTaskDelete( )入口参数输入要删除的任务句柄(Null表示删除任务本身)
三、静态任务创建
1、将宏configSUPPORT_STATIC_ALLOCATION配置为1
2、定义空闲任务和定时器任务的任务堆栈和TCB:
空闲任务函数(空闲任务控制块,空闲任务堆栈[数组],堆栈大小):
void vApplicationGetIdleTaskMemory(StaticTask_t **ppxIdleTaskTCBBuffer,
StackType_t **ppxIdleTaskStackBuffer,
uint32_t *pulIdleTaskStackSize)
软件定时器任务函数(软件定时器任务控制块,软件定时器任务堆栈[数组],堆栈大小):
void vApplicationGetTimerTaskMemory(StaticTask_t **ppxTimerTaskTCBBuffer,
StackType_t **ppxTimerTaskStackBuffer,
uint32_t *pulTimerTaskStackSize)
3、创建任务,并配置入口参数:xTaskCreateStatic( ),任务句柄不用配置,而是通过此函数的返回值