五、初识FreeRTOS之FreeRTOS的任务创建和删除

本节主要学习以下内容:

1,任务创建和删除的API函数(熟悉)

2,任务创建和删除(动态方法)(掌握)

3,任务创建和删除(静态方法)(掌握)

4,课堂总结(掌握)

一、任务创建和删除的API函数(熟悉)

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

API函数

描述

xTaskCreate()

动态方式创建任务

xTaskCreateStatic()

静态方式创建任务

vTaskDelete()

删除任务

  •  动态创建任务:任务的任务控制块以及任务的栈空间所需的内存,均由FreeRTOS从FreeRTOS管理的堆中分配
  • 静态创建任务:任务的任务控制块以及任务的栈空间所需的内存,需要用户分配提供

1.1 动态创建任务函数

五、初识FreeRTOS之FreeRTOS的任务创建和删除_第1张图片configMAX_TASK_NAME_LEN   默认为16

pvParameters 传递给任务函数的参数 ,默认为NULL

uxPriority任务优先级,范围:0 ~ configMAX_PRIORITIES - 1  configMAX_PRIORITIES 为32

返回值

描述

pdPASS

任务创建成功

errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY

任务创建失败

 任务控制块的堆空间不足。

1.2 实现动态创建任务流程

五、初识FreeRTOS之FreeRTOS的任务创建和删除_第2张图片此函数创建的任务会立刻进入就绪态,由任务调度器调度运行,在就绪态中找到优先级最高的任务去执行。

五、初识FreeRTOS之FreeRTOS的任务创建和删除_第3张图片

 扩展:任务控制块究竟是什么?通俗来讲就是任务的身份证,保留了任务的一些特征。下面为任务控制块结构体成员的简介:

五、初识FreeRTOS之FreeRTOS的任务创建和删除_第4张图片任务栈栈顶,在任务切换时的任务上下文保存、任务恢复息息相关,注意:每个任务都有属于自己的任务控制块,类似身份证。

1.3 静态创建任务函数

五、初识FreeRTOS之FreeRTOS的任务创建和删除_第5张图片

返回值

描述

NULL

用户没有提供相应的内存,任务创建失败

其他值

任务句柄,任务创建成功

 1.4 静态创建任务使用流程

五、初识FreeRTOS之FreeRTOS的任务创建和删除_第6张图片

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

1.5 任务删除函数

形参

描述

xTaskToDelete

待删除任务的任务句柄

 用于删除已被创建的任务,被删除的任务将从就绪态任务列表、阻塞态任务列表、挂起态任务列表和事件列表中移除

注意:

  • 1、当传入的参数为NULL,则代表删除任务自身(当前正在运行的任务)
  • 2、空闲任务会负责释放被删除任务中由系统分配的内存,但是由用户在任务删除前申请的内存, 则需要由用户在任务被删除前提前释放,否则将导致内存泄露

1.6 删除任务流程

五、初识FreeRTOS之FreeRTOS的任务创建和删除_第7张图片

二、任务创建和删除(动态方法)(掌握)

1、实验目的:学会 xTaskCreate( )  和 vTaskDelete( ) 的使用

2、实验设计:将设计四个任务:start_task、task1、task2、task3

四个任务的功能如下:

  • start_task:用来创建其他的三个任务,只执行一次,执行结束后调用vTaskDelete将自己删除
  • task1:实现LED0每500ms闪烁一次
  • task2:实现LED1每500ms闪烁一次
  • task3:判断按键KEY0是否按下,按下则删掉task1

代码明天上传

麻烦各位一键三连

五、初识FreeRTOS之FreeRTOS的任务创建和删除_第8张图片

你可能感兴趣的:(FreeRTOS实时操作系统,嵌入式软件)