基于尚硅谷FreeRTOS视频笔记——16—FreeRTOS的任务创建和删除
动态创建任务函数
简介
BaseType_t xTaskCreate:x表示定义出来的类型。Task表示在Task.c文件中。
1.TaskFunction_t pxTaskCode:任务的地址。
2.const char * const pcName:任务的别名,就是外号。但要注意,最大长度受configMAX_TASK_NAME_LEN 来控制。
3.const configSTACK_DEPTH_TYPE usStackDepth, :任务堆栈大小,默认单位4字节
所以最小为128*4字节
32位平台:4字节
16位平台:2字节
4. void * const pvParameters:传递给任务函数的参数
5. UBaseType_t uxPriority:任务优先级,范围:0 ~ configMAX_PRIORITIES - 1
6.TaskHandle_t * const pxCreatedTask :任务句柄,就是任务的任务控制块 。这是指向任务控制块的指针。
什么是任务控制块,如同身份证,包含自己的各种信息。
同样,任务控制块包含这个任务的优先级,大小等,就是任务身份证。
步骤
查找
内部实现
TCB简介
静态任务创建
简介
不同点:
StackType_t * const puxStackBuffer, /* 任务堆栈,一般为数组,由用户分配 */
StaticTask_t * const pxTaskBuffer /* 任务控制块指针,由用户分配 */
因为静态创建需要我们自己分配空间,所以不同TCB
步骤
任务删除函数
需要注意的是,空闲任务会负责释放被删除任务中由系统分配的内存,但是由用户在任务删除前申请的内存,则需要由用户在任务被删除前提前释放,否则将导致内存泄露。
如同你去别人家干活(创建任务),然后借了一个工具(申请内存),当活干完后(删除任务),需要将工具还回(删除申请的内存)。