第9课 任务创建、删除和API函数

第9课 任务创建、删除和API函数

任务创建和删除本质是调用FreeRTOS的API函数

API函数 描述
xTaskCreate() 动态方式创建任务
xTaskCreateStatic() 静态方式创建任务
xTaskDelete() 删除任务
  • 动态创建任务:

任务的任务控制块以及任务的栈空间所需的内存,均由FreeRTOS自动从系统管理的堆中分配(自动)

  • 静态创建任务:

任务的任务控制块以及任务的栈空间所需的内存,需要用户分配提供(人为)

2、实现动态创建任务的流程

  1. 将宏configSUPPORT_DIYAMIC_ALLOCATION配置为1
  2. 定义入口参数
  3. 编写任务函数

此函数创建的任务会立刻进入就绪态,由任务调度器运行

3、实现静态创建任务的流程

  1. 将宏configSUPPORT_DIYAMIC_ALLOCATION配置为1
  2. 定义空闲任务&定时器任务的任务堆栈及TCB
  3. 实现两个接口函数
  • vApplicationGetldleTaskMemory()
  • vApplicationGetTimerTaskMemory()
  1. 定义函数入口参数
  2. 编写任务函数

此函数创建的任务会立刻进入就绪态,由任务调度器运行

4、任务删除函数

被删除的任务将从就绪任务列表、阻塞态任务列表、挂起态任务列表和事件列表中移除

注意:
1.当传入的参数为NULL,则代表删除任务自身(当前正在运行的任务)
2.空闲任务会负责释放被删除任务中由系统分配的内存,但是由用户在任务删除前申请的内存;对于静态任务由用户在删除前由用户在任务被删除前提前释放内存,否则将导致内存泄漏

删除任务流程

1、获取所要删除任务的控制块
2、将被删除任务,移除所在列表
3、判断所需要删除的任务
4、更新下个任务的阻塞时间

你可能感兴趣的:(FreeRTOS,c,FreeRTOS,RTOS)