FreeRTOS进阶-任务管理实践

news2024/9/27 7:25:17

一、使用接口函数创建任务 

1.动态创建 xTaskCreate()

函数原型:

BaseType_t xTaskCreate(
TaskFunction_t pxTaskCode,                    // 函数指针, 任务函数
const char * const pcName,                      // 任务的名字
const configSTACK_DEPTH_TYPE usStackDepth, // 栈大小, 单位为word(字),1字=4字节(在32位MCU)
void * const pvParameters,                       // 调用任务函数时传入的参数
UBaseType_t uxPriority, // 优先级
TaskHandle_t * const pxCreatedTask );    // 任务句柄, 以后使用它来操作这个任务
2.静态创建 xTaskCreateStatic()
函数原型:
TaskHandle_t xTaskCreateStatic (
TaskFunction_t pxTaskCode,                   // 函数指针, 任务函数
const char * const pcName,                     // 任务的名字
const uint32_t ulStackDepth,                   // 栈大小,单位为word,10表示40字节
void * const pvParameters,                      // 调用任务函数时传入的参数
UBaseType_t uxPriority,                           // 优先级
StackType_t * const puxStackBuffer,       // 静态分配的栈,就是一个buffer
StaticTask_t * const pxTaskBuffer            // 静态分配的任务结构体的指针,用它来操作这个任务
);
二、实验1-任务创建
内容:创建两个任务,分别运行LED任务和OLED显示屏任务
(1)在系统默认创建的任务中初始化LCD(OLED),并循环运行LCD_Test()
(2)使用动态创建任务,在MX_FREERTOS_Init(void)中,调用xTaskCreate()创建Led任务
//依次分别为:任务函数,任务名,栈大小,任务函数传入形参,优先级,句柄 
xTaskCreate(MyTask, "myfirsttask", 128, NULL, osPriorityNormal, NULL);
三、实验2-任务创建"声、光、色、影"
内容:(1)动态创建任务"声",使用无源蜂鸣器播放音乐
           (2)静态创建任务"光",LED灯闪烁
           (3)静态创建任务"色",全彩LED渐变颜色
           (4)Freertos默认任务,在默认任务中检测红外遥控器的键值并显示在OLED上
1.PlayMusic任务:PlayMusic
在music.c中(文件路径:../Core/Src)
2.LED任务:Led_Test
在静态创建时,我们直接将函数LedTest作为任务函数,不再另外编写,如图:
此处报警:warning:  #167-D: argument of type "void (*)(void)" is incompatible with parameter of type "TaskFunction_t"   {TaskFunction_t  是 void (*)(void)型,类型不匹配,但是不影响调用 }
3.全彩LED任务:ColorLED_Test
在静态创建时,我们直接将函数ColorLED_Test作为任务函数,不再另外编写,如图:
4.OLED任务:StartDefaultTask

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

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

相关文章

渗透测试之漏洞挖掘指南(一)

1.漏洞挖掘中什么漏洞最多? 新手想快速挖掘到漏洞,要专注在业务逻辑与前端漏洞 -- 业务逻辑 (弱密码,等等) -- 前端漏洞 (xss, csrf , cors, jsonp...) 2. 常见漏洞提交平台 注册应急响应中…

投资理财基础知识:指数基金定投是什么?

大家好,我是财富智星,今天跟大家分享一下投资理财基础知识:指数基金定投是什么? 首先,你需要进行理财风险偏好测试,以确定自己的类型。风险偏好一般分为保守型、稳健型、平衡型、进取型和激进型。每个人对风…

C# 实现迷宫游戏

智能提示&#xff1a; /// <summary>/// 迷宫/// </summary>internal class Maze : IDisposable{private MazeCell[,] cells;private readonly Stack<MazeCell> stack new Stack<MazeCell>();private readonly Random rand new Random();private int…

Python 文件写入操作

视频版教程 Python3零基础7天入门实战视频教程 w模式是写入&#xff0c;通过write方法写入内容。 # 打开文件 模式w写入&#xff0c;文件不存在&#xff0c;则自动创建 f open("D:/测试3.txt", "w", encoding"UTF-8")# write写入操作 内容写入…

电脑软件:火绒应用商店功能体验(附下载)

火绒作为国内杀毒软件的一股清流&#xff0c;相信很多电脑爱好者都使用火绒软件作为自己的电脑杀毒软件&#xff0c;火绒杀毒软件的最大特点是软件没有弹窗广告、电脑杀毒可靠、完全免费使用、支持拦截烦人的弹窗广告。今天主要给大家介绍火绒官方内测了一款电脑应用商店独立软…

RK3588平台开发系列讲解(安卓篇)Android12 获取 root 权限

文章目录 一、关闭 selinux二、注释用户组权限检测三、su 文件默认授予 root 权限沉淀、分享、成长,让自己和他人都能有所收获!😄 📢获取Android设备的root权限是指取得超级用户(root用户)的权限,使得用户可以对系统进行更广泛的修改和操作。但需要注意,获取root权限…

VMware Workstation Pro各版本下载安装教程

VMware Workstation Pro下载 打开浏览器&#xff0c;输入VMware Workstation Pro 找到VMware Workstation Pro官网并点击进入&#xff0c;官网地址&#xff1a;https://www.vmware.com/cn/products/workstation-pro.html 进入官网首页后可以下载最新版本的VMware Workstation P…

【JAVA-Day21】序列化和反序列化,学会Java的编解码方法

标题序列化和反序列化&#xff0c;学会Java的编解码方法 序列化和反序列化&#xff0c;学会Java的编解码方法摘要引言一、什么是序列化1.1 序列化的过程 二、什么是反序列化2.1 反序列化的过程 三、为什么要进行序列化和反序列化3.1 主要目的3.2 应用场景 四、总结参考资料 博主…

linux-gic中断分析

linux-gic中断分析 这里主要分析 linux kernel 中 GICv3 中断控制器的代码(drivers/irqchip/irq-gic-v3.c)。 一、设备树 先来看下中断控制器的设备树信息&#xff1a; gic: interrupt-controller3400000 {compatible "arm,gic-v3";#interrupt-cells <3>;…

【pytest】conftest.py使用

1. 创建test_project 目录 test_project/sub/test_sub.py def test_baidu(test_url):print(fsub {test_url}) test_project/conftest.py 设置钩子函数 只对当前目录 和子目录起作用 import pytest #设置测试钩子函数 pytest.fixture() def test_url():return "http…

性能测试-性能测试的标准依据和价值(1)

性能测试的依据 国际标准化组织ISO/IEC JTC1/SC7/WG6开展了软件质量度量和评价的标准化工作&#xff0c;制定了ISO/IEC 25000 SQuaRE系列国际标准。 GB/T 25000.1—2021《系统与软件工程 系统与软件质量要求和评价(SQuaRE)第1部分&#xff1a;SQuaRE指南》便是采纳ISO/IEC 25…

巴特沃斯、切比雪夫I型、切比雪夫Ⅱ型和椭圆型滤波器的相同和不同之处

巴特沃斯、切比雪夫I型、切比雪夫Ⅱ型和椭圆型滤波器的相同和不同之处 1、概述 用 MATLAB 中的函数可以设计巴特沃斯、切比雪夫I型、切比雪夫Ⅱ型和椭圆型滤波器&#xff0c;我们用MATLAB的函数&#xff0c;在相同的条件下观察巴特沃斯、切比雪夫I型、 切比雪夫Ⅱ型和椭圆型滤…

如何看待近期tiktok大批量封号问题?

近期大量客户反馈Tiktok账号大批量被封&#xff0c;了解这类客户的情况后&#xff0c;得知被封的账号大部分都是为搬运国内视频上传的账号类型&#xff0c;从这次的事件可以看出&#xff0c;tk对视频的检测以及内容要求度越来越高&#xff0c;Tk风控升级&#xff0c;回导致很多…

【Nacos】Nacos服务注册源码分析(二)

在上篇文章中&#xff0c;我们主要聚焦于Nacos服务注册在服务端grpc设计层面的一些代码。本篇文章将深入探讨服务注册的相关逻辑&#xff0c;通过细致的分析来更全面地理解这一过程。 NamingGrpcClientProxy.registerService 我们从NamingGrpcClientProxy的registerService方法…

Vue项目中使用element-plus的el-table组件-组件使用-样式修改

项目配置 <div class"table-wrap"><el-tableclass"table-card-container":data"tableData"style"width: 100%"><template v-for"column in tableColumn"><el-table-columnv-if"column.isShow&qu…

前端笔试2

1.下面哪一个是检验对象是否有一个以自身定义的属性? foo.hasOwnProperty("bar")bar in foo foo["bar"] ! undefinedfoo.bar ! null 解析&#xff1a; bar in foo 检查 foo 对象是否包含名为 bar 的属性&#xff0c;但是这个属性可以是从原型链继承来的&a…

华为云云耀云服务器L实例评测|轻量级应用服务器对决:基于 fio 深度测评华为云云耀云服务器L实例的磁盘性能

本文收录在专栏&#xff1a;#云计算入门与实践 - 华为云 专栏中&#xff0c;本系列博文还在更新中 相关华为云云耀云服务器L实例评测文章列表如下&#xff1a; 华为云云耀云服务器L实例评测 | 从零开始&#xff1a;云耀云服务器L实例的全面使用解析指南华为云云耀云服务器L实…

JVM:如何判断对象已死?

对象已死&#xff1f; 在堆里面存放着Java世界中几乎所有的对象实例&#xff0c;垃圾收集器在对堆进行回收前&#xff0c;第一件事情就是要确定这些对象之中哪些还“存活”着&#xff0c;哪些已经“死去”&#xff08;“死去”即不可能再被任何途径使用的对象&#xff09;了。…

2023/09/17

文章目录 1. vscode展开所有代码快捷键ctrl k j2. git删除所有stash或指定stash git stash drop [可选stash名]3. vue在函数默认参数后增加新参数4. git push 添加“-u”参数5. vscode快捷输入符号$的使用6. WebGL之什么是GLB&GLTF文件&#xff1f;7. WebGL之什么是HDR&a…

python之pyQt5实例:Matplotlib的应用

1、显示逻辑 1.1MatplotlibWidget.py import sys import random import matplotlibmatplotlib.use("Qt5Agg") from PyQt5 import QtCore from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QSizePolicy, QWidget from numpy import arange, si…