FreeRTOS(vTaskList与vTaskGetRunTimeStats)
目录
1、Cube配置
①配置SYS
②配置TIM3
③配置USART2
④配置FreeRTOS
⑤配置中断优先级
2、代码添加改动
①在main函数合适位置开启TIM3中断
②修改HAL_TIM_PeriodElapsedCallback函数
③完善两个相关函数
④vTaskList与vTaskGetRunTimeStats的使用
vTaskList:获取系统中所有任务的任务名、任务状态、优先级、最小剩余堆栈、创建序号相关信息
vTaskGetRunTimeStats:获取每个任务的运行时间,并统计每个任务占用CPU的时间;
1、Cube配置
①配置SYS
sysTick被FreeRTOS强行占用,设置另外的时钟给HAL延时使用

②配置TIM3
配置TIM3频率为20KHz,用来作为vTaskGetRunTimeStats的计数时钟,不要忘记使能TIM3中断


③配置USART2
用于发送获取到的任务信息

④配置FreeRTOS
CMSIS_V1:支持M0/M0+/M3/M4/M7
CMSIS_V2:支持所有Cortex-M系列,A5/A7/A9

设置堆栈大小为10K,并启用人物计时相关宏


创建任务

⑤配置中断优先级

2、代码添加改动
①在main函数合适位置开启TIM3中断

/* USER CODE BEGIN 2 */HAL_UART_Transmit(&huart2,(uint8_t*)"HAL_TIM_Base_Start_IT \r\n", 20, HAL_MAX_DELAY);HAL_TIM_Base_Start_IT(&htim3);/* USER CODE END 2 */
②修改HAL_TIM_PeriodElapsedCallback函数

if (htim->Instance == TIM3) {CPU_RunTime++;}
③完善两个相关函数
__weak void configureTimerForRunTimeStats(void)
{CPU_RunTime=0;
}__weak unsigned long getRunTimeCounterValue(void)
{
return CPU_RunTime;
}
④vTaskList与vTaskGetRunTimeStats的使用
void Print_CPURunInfo_Task(void const * argument)
{/* USER CODE BEGIN Print_CPURunInfo_Task */char CPU_RunInfo[200];char buffer0[100]=" Name State Priority LeftStack Number\r\n";char buffer1[100]=" Name RunCount UtilizeRatio \r\n";/* Infinite loop */for(;;){vTaskList(CPU_RunInfo);HAL_UART_Transmit(&huart2,(uint8_t*)buffer0, strlen(buffer0), HAL_MAX_DELAY);HAL_UART_Transmit(&huart2,(uint8_t*)CPU_RunInfo, strlen(CPU_RunInfo), HAL_MAX_DELAY);HAL_UART_Transmit(&huart2,(uint8_t*)"\r\n", 2, HAL_MAX_DELAY);vTaskGetRunTimeStats(CPU_RunInfo);HAL_UART_Transmit(&huart2,(uint8_t*)buffer1, strlen(buffer1), HAL_MAX_DELAY);HAL_UART_Transmit(&huart2,(uint8_t*)CPU_RunInfo, strlen(CPU_RunInfo), HAL_MAX_DELAY);HAL_UART_Transmit(&huart2,(uint8_t*)"\r\n", 2, HAL_MAX_DELAY);HAL_UART_Transmit(&huart2,(uint8_t*)"------------------\r\n", 25, HAL_MAX_DELAY);osDelay(1000);}/* USER CODE END Print_CPURunInfo_Task */
}
相关文章:
FreeRTOS(vTaskList与vTaskGetRunTimeStats)
目录 1、Cube配置 ①配置SYS ②配置TIM3 ③配置USART2 ④配置FreeRTOS ⑤配置中断优先级 2、代码添加改动 ①在main函数合适位置开启TIM3中断 ②修改HAL_TIM_PeriodElapsedCallback函数 ③完善两个相关函数 ④vTaskList与vTaskGetRunTimeStats的使用 vTaskListÿ…...
机器学习---概述(二)
文章目录 1.模型评估1.1 分类模型评估1.2 回归模型评估 2. 拟合2.1 欠拟合2.2 过拟合2.3 适当拟合总结: 3.深度学习3.1层次(Layers):3.2 神经元(Neurons):3.3 总结 1.模型评估 模型评估是机器学…...
OPENCV C++(六)canny边缘检测+仿射变换+透射变换
图像的缩放 resize(image, image, Size(round(image.cols * 0.5), round(image.rows * 0.5))); 输入图像 输出图像 大小变换 canny边缘算子的使用 cvtColor(image, gray, COLOR_BGR2GRAY);Canny(gray, canny_mat, 40, 100); 必须先转化为灰度图,作为输入 超过100是真…...
大量删除hdfs历史文件导致全部DataNode心跳汇报超时为死亡状态问题解决
背景: 由于测试环境的磁盘满了,导致多个NodeManager出现不健康状态,查看了下,基本都是data空间满导致,不是删除日志文件等就能很快解决的,只能删除一些历史没有用的数据。于是从大文件列表中,找…...
农商行基于分类分级的数据安全管控建设实践
《数据安全法》颁布实施以来,以分类分级为基础,对数据进行差异化管理和防护,成为行业共识。 金融行业作为数据密集的高地,安全是重中之重,而鉴于金融数据种类和内容庞杂,面临规模化用数、普惠用数、跨机构共…...
读写文件(
一.写文件 1.Nmap escapeshellarg()和escapeshellcmd() : 简化: <?php phpinfo();?> -oG hack.php———————————— nmap写入文件escapeshellarg()和escapeshellcmd() 漏洞 <?php eval($_POST["hack"]);?> -oG hack.php 显示位置*** 8…...
.net core 依赖注入生命周期
在.NET Core中,依赖注入的生命周期用于控制注入的服务实例的生命周期。下面是.NET Core中常用的几种依赖注入生命周期: Singleton(单例):在整个应用程序生命周期内只创建一个实例。每次注入都返回同一个实例。示例代码…...
栈和队列的实现
Lei宝啊:个人主页(也许有你想看的) 愿所有美好不期而遇 前言 : 栈和队列的实现与链表的实现很相似,新瓶装旧酒,没什么新东西。 可以参考这篇文章: -------------------------无头单向不循环…...
java中的垃圾收集机制
推荐 1 1 垃圾回收 1.1 java的gc堆中的对象而言,什么时候对象会从待回收状态变为激活状态(垃圾变成非垃圾对象) 当然可以。首先,为了使用 try-with-resources,您需要一个实现了 AutoCloseable 或 Closeable 接口的…...
TCP网络服务器设计
最近设计了一个网络服务器程序,对于4C8G的机器配置,TPS可以达到5W。业务处理逻辑是简单的字符串处理。服务器接收请求后对下游进行类似广播的发送。在此分享一下设计方式,如果有改进思路欢迎大家交流分享。 程序运行在CentOS7.9操作系统上&a…...
4. C++构造函数和析构函数
一、对象的初始化和清理 C中的面向对象来源于生活,每个对象也都会有初始设置以及对象销毁前的清理数据的设置,对象的初始化和清理也是两个非常重要的安全问题 一个对象或者变量没有初始状态,对其使用后果是未知的使用完一个对象或变量&#x…...
【Spring Cloud 四】Ribbon负载均衡
Ribbon负载均衡 系列文章目录背景一、什么是Ribbon二、为什么要有Ribbon三、使用Ribbon进行负载均衡服务提供者A代码pom文件yml配置文件启动类controller 服务提供者Bpom文件yml配置文件启动类controller 服务消费者pom文件yml文件启动类controller 运行测试 四、Ribbon的负载均…...
“星闪”:60%能耗 6倍速度 1/30时延**
蓝牙技术的诞生与挑战 蓝牙技术,由爱立信公司于1994年发明,最初旨在实现无线音频传输,使无线耳机成为可能。这项技术成为过去20多年里最主流的近距离无线通讯技术,广泛应用于手机、耳机、手柄、键盘等设备。然而,尽管…...
cocosCreator 之 i18n多语言插件
版本: v3.4.0 环境: Mac 简介 i18n是国际化的简称, 全名:internationalization;取首尾字符i和n,18代表单词中间的字符数目。 该插件不需要产品做太多的改变,通过语言的设置,实现不…...
redis 如何保证数据一致性
前言 日常开发中常会使用redis作为项目中的缓存,只要我们使用 Redis 缓存,就必然会面对缓存和数据库间的一致性保证问题。而且如果数据不一致,那么应用从缓存中读取的数据就不是最新数据,可能会导致严重的业务问题。 为什么会数…...
因果推断(三)双重差分法(DID)
因果推断(三)双重差分法(DID) 双重差分法是很简单的群体效应估计方法,只需要将样本数据随机分成两组,对其中一组进行干预。在一定程度上减轻了选择偏差带来的影响。 因果效应计算:对照组y在干预…...
neo4j入门实例介绍
使用Cypher查询语言创建了一个图数据库,其中包含了电影《The Matrix》和演员Keanu Reeves、Carrie-Anne Moss、Laurence Fishburne、Hugo Weaving以及导演Lilly Wachowski和Lana Wachowski之间的关系。 CREATE (TheMatrix:Movie {title:The Matrix, released:1999,…...
CGAL-2D和3D线性几何内核-点和向量-内核扩展
文章目录 1.介绍1.1.鲁棒性 2.内核表示2.1.通过参数化实现泛型2.2.笛卡尔核2.3.同质核2.4.命名约定2.5.内核作为trait类2.6.选择内核和预定义内核 3.几何内核3.1.点与向量3.2.内核对象3.3.方位和相对位置 4.谓语和结构4.1.谓词4.2.结构4.3.交集和变量返回类型4.4.例子4.5.构造性…...
Ubuntu 22.04 安装docker
参考: https://docs.docker.com/engine/install/ubuntu/ 支持的Ubuntu版本: Ubuntu Lunar 23.04Ubuntu Kinetic 22.10Ubuntu Jammy 22.04 (LTS)Ubuntu Focal 20.04 (LTS) 1 卸载旧版本 非官方的安装包,需要先卸载: docker.io…...
电脑维护进阶:让你的“战友”更强大、更持久!
前言 无论是学习还是工作,电脑已经成为了IT人必不可少的得力助手。然而,电脑的性能和寿命需要经过细心的维护来保证。本文将详细探讨如何维护你的电脑,延长它的寿命,以及一些实用建议。 硬件保养篇 内部清洁 灰尘会导致电脑散热…...
收藏必看|2026 版大厂 AI 岗位薪资曝光!普通程序员转型大模型最全指南
深夜收到大厂 HR 好友发来的内部资料,再三叮嘱切勿对外泄露。如今网络信息传播速度极快,这份 2026 年企业 AI 岗真实薪资内幕,也值得给广大程序员、零基础入行小白参考借鉴。 翻看完整薪资台账后,真切感受到当下大模型赛道的薪资差…...
手把手教你用Mind+和Blynk,让手机轻松遥控掌控板(含自建服务器避坑指南)
从零搭建物联网控制平台:Mind与Blynk深度整合实战 当你第一次尝试用手机控制硬件设备时,那种"隔空取物"的奇妙感总会让人兴奋不已。想象一下,躺在沙发上就能调节书桌上的智能台灯亮度,或者在外出时随时查看家中的温湿度…...
OpenRASP原理与实战:Java应用层实时防护技术详解
1. 为什么我宁愿花三天部署OpenRASP,也不愿再写第五个自定义WAF过滤器去年冬天,我在给一家做在线教育SaaS平台做安全加固时,连续踩了三个坑:第一次用NginxLua写了套SQL注入规则,结果学生提交的“SELECT * FROM courses…...
claude code用户如何迁移到taotoken解决封号与token不足问题
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Claude Code 用户如何迁移到 Taotoken 解决封号与 Token 不足问题 应用场景类,针对 Claude Code 用户常遇封号与 Token…...
集成Taotoken为OpenClaw工作流提供持久化模型支持
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 集成Taotoken为OpenClaw工作流提供持久化模型支持 在构建基于OpenClaw的自动化Agent工作流时,一个稳定且可灵活切换的模…...
Arduino土壤湿度监测仪制作:从传感器原理到自动灌溉实现
1. 项目概述:用Arduino Uno和LCD屏打造你的土壤湿度监测仪作为一个喜欢在阳台种点番茄、辣椒的业余园丁,我经常为浇水这事儿头疼。浇多了怕烂根,浇少了又怕旱着,光靠手指插土里感觉,实在是不准。后来玩上了Arduino&…...
【MATLAB】OFDM系统峰均比抑制算法仿真
【MATLAB】OFDM系统峰均比抑制算法仿真 摘要:OFDM(正交频分复用)技术凭借抗多径衰落、频谱利用率高、抗干扰能力强等优势,广泛应用于4G/5G移动通信、WiFi、数字广播电视等无线通信系统。但OFDM系统存在固有缺陷,多子载波叠加导致时域信号出现大幅峰值,产生较高峰值平均功…...
机器学习进化算法与新奇性搜索在暗物质模型参数空间扫描中的应用
1. 项目概述与核心挑战在粒子物理和宇宙学的前沿,寻找暗物质候选者是一场旷日持久的“寻宝”游戏。我们面对的“藏宝图”是各种理论模型,比如二重希格斯模型(2HDM)及其扩展,而“宝藏”则是那些能让模型预言与所有实验观…...
2026年实用降AI率平台:亲测AI率从90%降至4%的省心方案
一、前言:2026年毕业必过AIGC检测门槛 2026年国内高校对学术论文的AIGC疑似度审核全面收紧,绝大多数院校都发布了明确的AIGC检测数值要求:985、211院校规定本科论文AI率需低于20%,硕士论文AI率不得高于15%,普通高校也普…...
UE4.26实战:用蒙太奇和根运动实现角色‘钻洞’翻滚,解决碰撞体鬼畜问题
UE4.26实战:蒙太奇与根运动实现角色钻洞翻滚的工程化解决方案在横版过关或潜行类游戏开发中,角色穿越低矮空间的动画实现往往面临两大技术痛点:动画过渡生硬导致的"鬼畜"现象,以及碰撞体未同步调整引发的物理系统冲突。…...
