五、初识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.mzph.cn/news/183128.shtml

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

相关文章

Spark_日期参数解析参数-spark.sql.legacy.timeParserPolicy

在Apache Spark中,spark.sql.legacy.timeParserPolicy是一个配置选项,它控制着时间和日期解析策略。此选项主要影响如何解析日期和时间字符串。 在Spark 3.0之前的版本中,日期和时间解析使用java.text.SimpleDateFormat,它在解析…

【11】Python函数专题(中)

文章目录 1. 函数的返回值1.1 一个返回值1.2 多个返回值1.3 无返回值2. 文档字符串2.2 `help()`函数3. 函数的作用域3.1 局部作用域3.2 全局作用域3.3 嵌套作用域3.4 内置作用域3.5 global关键字4. 命名空间5. 递归函数1. 函数的返回值 在Python中,定义一个函数时,可以使用r…

mongodb基本操作命令

mongodb快速搭建及使用 1.mongodb安装1.1 docker安装启动mongodb 2.mongo shell常用命令2.1 插入文档2.1.1 插入单个文档2.1.2 插入多个文档2.1.3 用脚本批量插入 2.2 查询文档 前言:本篇默认你是对nongodb的基础概念有了了解,操作是非常基础的。但是与关…

微信小程序——给按钮添加点击音效

今天来讲解一下如何给微信小程序的按钮添加点击音效 注意&#xff1a;这里的按钮不一定只是 <button>&#xff0c;也可以是一张图片&#xff0c;其实只是添加一个监听点击事件的函数而已 首先来看下按钮的定义 <button bind:tap"onInput" >点我有音效&…

C++面向对象复习笔记暨备忘录

C指针 指针作为形参 交换两个实际参数的值 #include <iostream> #include<cassert> using namespace std;int swap(int *x, int* y) {int a;a *x;*x *y;*y a;return 0; } int main() {int a 1;int b 2;swap(&a, &b);cout << a << &quo…

Metasploit框架(3), meterpreter 常用命令, sniffer流量监听, portfwd端口转发, kiwi, Mimikatz密码破解

Metasploit框架(3), meterpreter 常用命令与扩展工具 进入到 meterpreter > 提示符环境下才能执行命令 一, 常用命令 sysinfo # 系统信息 getuid # 当前用户 getprivs # 当前权限 load priv # 加载priv getsystem # 提权到系统权限 clearev # 清除系…

【开源视频联动物联网平台】为什么需要物联网网关?

在一些物联网项目中&#xff0c;物联网网关这一产品经常被涉及。那么&#xff0c;物联网网关究竟有何作用&#xff1f;具备哪些功能&#xff1f;同时&#xff0c;我们也发现有些物联网设备并不需要网关。那么&#xff0c;究竟在何时需要物联网网关呢&#xff1f; 物联网的架构…

LaTeX插入裁剪后的pdf图像

画图 VSCode Draw.io Integration插件 有数学公式的打开下面的选项&#xff1a; 导出 File -> Export -> .svg导出成svg格式的文件。然后用浏览器打开svg文件后CtrlP选择另存为PDF&#xff0c;将图片存成pdf格式。 裁剪 只要安装了TeXLive&#xff0c;就只需要在图…

LVS-NAT实验

实验前准备&#xff1a; LVS负载调度器&#xff1a;ens33&#xff1a;192.168.20.11 ens34&#xff1a;192.168.188.3 Web1节点服务器1&#xff1a;192.168.20.12 Web2节点服务器2&#xff1a;192.168.20.13 NFS服务器&#xff1a;192.168.20.14 客户端&#xff08;win11…

java线程池管理工具类

1&#xff0c;这是线程池管理工具类&#xff0c;在系统关闭时确保任务执行完毕&#xff0c;自定义线程名字&#xff0c;自定义抛弃策略默认使用了CallerRunsPolicy拒绝策略 import java.util.concurrent.ExecutorService; import java.util.concurrent.LinkedBlockingQueue;imp…

网络数据通信—ProtoBuf实现序列化和反序列化

目录 前言 1.环境搭建 2. centos下编写的注意事项 3.约定双端交互接口 4.约定双端交互req/resp 5. 客户端代码实现 6.服务端代码实现 前言 Protobuf还常用于通讯协议、服务端数据交换场景。那么在这个示例中&#xff0c;我们将实现一个网络版本的通讯录&#xff0c;模拟…

ESD静电试验方法及标准

文章目录 概述静电放电抗扰标准静电放电实验室的型式试验静电放电试验配置静电放电试验方法 静电放电等级 参考静电放电发生器&#xff08;ESD&#xff09;试验方法及标准 概述 在低湿度环境下通过摩擦使人体充电的人体在与设备接触时可能会放电&#xff0c;静电放电的后果是&…

Spring Boot 在进行依赖注入时,使用了反射机制,类加载器-启动类拓展类-应用类加载器

类加载器作用 将class文件字节码内容加载到内存中&#xff0c;并将这些静态数据转换成方法区的运行时数据结构&#xff0c;然后在堆中生成一个代表这个类的java.lang.Class对象&#xff0c;作为方法区中类数据的访问入口。能不能用通俗的语言翻译一下类加载器的作用 类加载通…

uniapp 打包的 IOS打开白屏 uniapp打包页面空白

uniapp的路由跟vue一样,有hash模式和history模式, 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载。 如果不想要很丑的 hash,我们可以用路由的 history 模式,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面。…

PHP项目用docker一键部署

公司新项目依赖较多&#xff0c;扩展版本参差不一&#xff0c;搭建环境复杂缓慢&#xff0c;所以搭建了一键部署的功能。 docker-compose build 构建docker docker-compose up 更新docker docker-compose up -d 后台运行docker docker exec -it docker-php-1 /bin/bas…

00Hadoop数据仓库平台

在这里是学习大数据的第一站 什么是数据仓库常见大数据平台组件及介绍 什么是数据仓库 在计算领域&#xff0c;数据仓库&#xff08;DW 或 DWH&#xff09;也称为企业数据仓库&#xff08;EDW&#xff09;&#xff0c;是一种用于报告和数据分析的系统&#xff0c;被认为是商业智…

Vite 了解

1、vite 与 create-vite 的区别 2、vite 解决的部分问题 3、vite配置文件的细节 3.1、vite语法提示配置 3.2、环境的处理 3.3、环境变量 上图补充 使用 3.4、vite 识别&#xff0c;vue文件的原理 简单概括就是&#xff0c;我们在运行 npm润dev 的时候&#xff0c;vite 会搭起…

hugging face下载dataset时候出现You must be authenticated to access it.问题解决

Cannot access gated repo for url https://huggingface.co/tiiuae/falcon-180B/resolve/main/tokenizer_config.json. Repo model tiiuae/falcon-180B is gated. You must be authenticated to access it. 参考https://huggingface.co/docs/huggingface_hub/guides/download …

.net HttpClient封装

using Newtonsoft.Json; /// <summary> /// Http 请求工具类 /// </summary> public class HttpClientUtils { /// <summary> /// 请求的域名 /// </summary> public static string BaseUrl { get; set; } "http://localhost:5016"; /// &l…

Mac 浏览器下载的文件名总是「乱码」

如果可以实现记得点赞分享&#xff0c;谢谢老铁&#xff5e; 本文所说的方法是在出现文件名乱码情况下&#xff0c;如何恢复文件名的正确中文名称&#xff0c;并非一劳永逸地避免乱码的出现。这是由于下载文件名称乱码的出现&#xff0c;往往是系统、浏览器、网站三方面因素共…