FreeRTOS的任务创建和删除
1,任务创建和删除的API函数(熟悉)
任务的创建和删除本质就是调用FreeRTOS的API函数
一、任务创建
- 动态创建任务:任务的任务控制块以及任务的栈空间所需的内存,均由 FreeRTOS 从 FreeRTOS 管理的堆中分配
- 静态创建任务:任务的任务控制块以及任务的栈空间所需的内存,需用户分配提供
返回值 | 描述 |
---|---|
pdPASS | 任务创建成功 |
errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY | 任务创建失败 |
任务创建失败的原因是堆栈空间不足
1
2
任务栈栈顶,在任务切换时的任务上下文保存、任务恢复息息相
注意:每个任务都有属于自己的任务控制块,类似身份证
返回值 | 描述 |
---|---|
NULL | 用户没有提供相应的内存,任务创建失败 |
其他值 | 任务句柄,任务创建成功 |
二、任务删除
任务删除函数:void vTaskDelete(TaskHandle_t xTaskToDelete);
用于删除已被创建的任务
被删除的任务将从就绪态任务列表、阻塞态任务列表、挂起态任务列表和事件列表中移除
1、当传入的参数为NULL,则代表删除任务自身(当前正在运行的任务)
2、空闲任务会负责释放被删除任务中由系统分配的内存,但是由用户在任务删除前申请的内存, 则需要由用户在任务被删除前提前释放,否则将导致内存泄露