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

本节主要学习以下内容:

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

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

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

4,课堂总结(掌握)

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

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

API函数

描述

xTaskCreate()

动态方式创建任务

xTaskCreateStatic()

静态方式创建任务

vTaskDelete()

删除任务

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

1.1 动态创建任务函数

configMAX_TASK_NAME_LEN   默认为16

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

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

返回值

描述

pdPASS

任务创建成功

errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY

任务创建失败

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

1.2 实现动态创建任务流程

此函数创建的任务会立刻进入就绪态,由任务调度器调度运行,在就绪态中找到优先级最高的任务去执行。

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

任务栈栈顶,在任务切换时的任务上下文保存、任务恢复息息相关,注意:每个任务都有属于自己的任务控制块,类似身份证。

1.3 静态创建任务函数

返回值

描述

NULL

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

其他值

任务句柄,任务创建成功

 1.4 静态创建任务使用流程

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

1.5 任务删除函数

形参

描述

xTaskToDelete

待删除任务的任务句柄

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

注意:

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

1.6 删除任务流程

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

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

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

四个任务的功能如下:

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

代码明天上传

麻烦各位一键三连

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/230741.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UE 事件分发机制(二) day10

自定义事件分发机制 自建事件分发机制与结构 Unreal推荐的游戏逻辑开发流程 基于 Unreal推荐的游戏逻辑开发流程,一般我们的整体规划也就是这样 大致结构类图 创建接口类与管理类以及所需函数 新建一个Unreal接口类作为接口 然后创建一个蓝图函数库的基类 Ev…

uniapp小程序项目连接微信客服【最新/最全教程】

目录 文档微信官网文档图片微信小程序客服配置官网 效果图聊天地址手机微信电脑端 微信聊天功能实现微信小程序后台添加客服微信号以及配置代码实现参考最后 文档 微信官网文档 微信官网文档 图片 微信小程序客服配置官网 微信小程序客服配置官网 效果图 聊天地址 地址 手…

LESS的叶绿素荧光模拟实现——任意波段荧光模拟

目录 前言一、任意波段荧光模拟的实现二、需要注意的输入参数 前言 此专栏默认您对LESS (LargE-Scale remote sensing data and image Simulation framework) 模型和叶绿素荧光(Sun-Induced chlorophyll Fluorescence, SIF)有一定的了解。当然,您也可以在这里下载中…

单片机中断系统的应用

中断系统是单片机中非常重要的组成部分,它是为了使单片机能够对外部或内部随机发生的事件实时处理而设置的。中断功能的存在,在很大程度上提高了单片机实时处理能力,它也是单片机最重要的功能之一,是我们学习单片机必须掌握的重要…

Python自动化测试数据驱动解决数据错误

数据驱动将测试数据和测试行为完全分离,实施数据驱动测试步骤如下: A、编写测试脚本,脚本需要支持从程序对象、文件或者数据库读入测试数据; B、将测试脚本使用的测试数据存入程序对象、文件或者数据库等外部介质中;…

解决msvcr71.dll丢失5个方法,修复程序运行缺失dll问题

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“msvcr71.dll丢失”。这个错误提示通常出现在运行某些程序或游戏时,给使用者带来了很大的困扰。那么,究竟是什么原因导致了msvcr71.dll文件的丢失呢?本文…

大数据之HBase

HBase介绍 Apache的三篇论文,GFS谷歌文件系统->HDFS;MR -> MR ; BigTable ->HBase;HBase是hadoop数据库,一种分布式、可扩展的大数据NoSQL数据库之一。适合对于大量数据进行随机、实时的读写操作 HBase数据模型 Bigtable是一个稀…

hql面试题之上海某资深数仓开发工程师面试题-求不连续月份的月平均值

1.题目 A,B两组产品的月平均值,月平均值是当月的前三个月值的一个平均值,注意月份是不连续的,如果当月的前面的月份不存在,则为0。如A组2023-04的月平均值为2023年1月的数据加2023-02月的数据的平均值,因为没有其他月…

Matrix电磁阀详解

文章目录 一. 气动电磁阀流量控制技术1. PWM技术2. PFM技术3. PNM技术4. PCM技术5. 组合技术(Combined Techniques)6. 双张力开关控制技术(ON -OFF control Technique with double level of tension) 二. Matrix电磁阀特性1. Matr…

史上最全接单平台集锦,程序员不容错过!

非典型程序员不是每天都累成狗,天天”996"甚至”007“。可能,面临着上班摸鱼没事干,下班躺尸打游戏的无聊境况。那么,如果你也是这样的程序员,有没有什么安排可以打发时间? 闲着还不如挣钱~心情好的时…

【css】调整图片样式-铅笔画-以及其它

[css]调整图片样式-铅笔画-以及其它 在这个网址下有很多实例&#xff0c;尝试了其中几个&#xff0c;成功实现的对半分。使用Micsoft&#xff0c;估计是不支持一些特性导致的。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UT…

卡码网语言基础课 | 16. 出现频率最高的字母

目录 一、 哈希表 二、 编写解题 2.1 统计出现次数 2.2 解答 通过本次练习&#xff0c;将学习到C中哈希表的基础知识 题目&#xff1a; 给定一个只包含小写字母的字符串&#xff0c;统计字符串中每个字母出现的频率&#xff0c;并找出出现频率最高的字母&#xff0c;如果…