FreeRTOS任务状态查询

一.任务相关API

vTaskList(),创建一个表格描述每个任务的详细信息

   char biaoge[1000];     //定义一个缓存

   vTaskList(biaoge);    //将表格存到这缓存中
   printf("%s /r/n",biaoge);

1.uxTaskPriorityGet()获取任务优先级

此函数用来获取指定任务的优先级,要用此函数的话宏 INCLUDE_uxTaskPriorityGet应该定义为1.

函数原型

UBaseType_t uxTaskPriorityGet(TaskHandle_t xTask)  在task.c中

参数

xTask : 要查找的任务的任务句柄

返回值 :获取到的对应的任务优先级 ,要去查看参数的类型,用其来定义返回值

2.vTaskPrioritySet() 改变任务优先级

此函数用于该改变某一个任务优先级,要使用此函数的话宏INCLUDE_uxTaskPrioritySet应该定义为1,函数原型如下

void vTaskPrioritySet(TaskHandle_t xTask,UBase Type_t uxNewpriority)

xTask:要查找的任务的任务句柄

uxNewpriority:任务要使用的新的优先级,可以是0~configMAX_PRIORITIES-1。

3.uxTASkGetsystemState()  获取系统中所有任务的任务壮态

        此函数用于获取系统中所有任务的任务壮态,每个任务的壮态信息保存在一个 TaskStatus_t类型的结构体里面,这个结构体里面包含了任务的任务句柄、任务名字、堆栈、优先级等信息,要使用此函数的话宏 configUSE_TRACE_FACILITY.应该定义力1

函数原型如下:
UBase Type_t ux TaskGetSystemState( TaskStatus 1 * const      px TaskStatusArray,
                                                                 const UBaseType_t      ux Array Size,
                                                                 uint32_1 * const            pulTotalRun Time )
参数:
pxTaskStatusArray: 指向 TaskStatus_1结构体类型的数组首地址,每个任务至少需要一个TaskStatus_t 结构体,任务的数量可以使用的数uxTaskGetNumberOfTasks()。

结构体 TaskStatus_t 在文件task.h中有如下定义:
typedef struct TASK_ STATUS
{

       TaskHandle 1     xHandle;                                //任务句柄
       const char *        pc TaskName;                       //任务名字
       UBase Type t     x TaskNumber;                      //任务编号  
       eTaskState         eCurrentState;                      //当前任务壮态,cTaskState 是一个枚举类型
       UBase Type_t     uxCurrentPriority;              //任务当前的优先级
       UBase Type_t     uxBasePriority;                    //任务基础优先级
       uint32_1             ulRunTimeCounter,              //任务运行的总时间
       StackType 1 *     pxStackBase;                       //堆栈基地址
       uint 16_t            usStackHigh WaterMark;      //从任务创建以来任务堆找剩余的最小大小,此
                                                                                值如果太小的话说明堆找有溢出的风险。

) TaskStatus_t;

uxArraySize:保存任务壮态数组的数组的大小。



 

4.vTaskGetInfo()获取指定任务的状态

5.xTaskGetApplication Task Tag()用于获取任务Tag值

6.xTaskGetCurrentTaskHandle()获取当前任务的任务句柄

7.xTaskGetHandle()根据任务文字获取任务的任务句柄

在使用函数下TaskCreate()或xTaskCreateStatic()创建任务的时候都会给任务分配一个任务名,.xTaskGetHandle()函数就是根据这个任务名来查询其对应得任务句柄。

要使用此函数的话宏 INCLUDE_xTaskGetHandle 应该定义力1

函数原型如下:

 TakeHandle_T xTaskGetHandle( const char*  pcNameQuery)

参数

pcNameToQuery:    任务名,C语言字符串。

要把这个函数获得句柄就要定义一个和定义这个函数一样的类型数

写好获取句柄的函数和打印函数    

 Taskhandle = xTaskGetHandle("query_task");  query_task要查询的任务的任务名,这个函数的参数是指针类型,所以要用字符串

发现两个获取的句柄一样,函数使用正确

8.xTaskGetIdleTaskHandle() 用于返回空闲任务的任务句柄,要使用此函数的话对应宏要为1

9.uxTaskGetStackHighWaterMark()用于查询任务从创建好到现在的历史剩余最小值,这个值越小说明任务堆栈溢出的可能性就越大!

FreeRTOS 把这个历史剩余最小值叫做“高水位线”。此函数相对来说会多耗费一点时间,所以在代码调试阶段可以使用,产品发布的时候最好不要使用。要使用此函数的话宏   INCLUDE_uxTaskGetStackHigh WaterMark 必须为1,此函数原型:下:
 UBase Type_t ux TaskGetStackHighWaterMark( TaskHandle_t xTask)
参数:
xTask:要查询的任务的任务句柄,当这个参数为 NULL 的话说明查询自身任务(即调用函数 ux TaskGetStackHlighWaterMark0的任务)的“高水位线”。
返回值:任务堆栈的“高水位线”值,也就是堆栈的历史剩余最小值。

定义的大小为200,剩余146,说明用了54个。

  10.eTaskGetState()此函数用于查询某个任务的运行壮态

比如:运行态、阻塞态、挂起态、就绪态等,返回值是个枚举类型。要使用此函数的话宏 INCLUDE_cTaskGietStale 必须为1,函数原型如下,
eTaskState    eTaskGetState( TaskHandle_t  xTask)

xTask:要查询的任务的任务句柄

返回值:返回值eTaskState的类型,这个是个枚举类型,在文件task.h中有定义

返回值1:就绪态的意思

11.pcTaskGetName() 根据任务句柄查询任务的名字

12.xTaskGetTickCount()查询任务从调度到现在运行的时间

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【3】VS Code 新建上位机项目---C#窗体与控件开发

【3】VS Code 新建上位机项目---C#窗体与控件开发 1 窗体1.1 新建窗体1.2 windows程序与窗口的关系1.3 windows程序的事件1.3.1 定义事件与处理事件1.3.2 关联事件1.3.3 Windows窗体对象创建与显示(show与ShowDialog())2 控件与容器2.1 常用容器2.1.1 Groupbox2.1.2 Pannel2.1.…

AI编程: 一个案例对比CPU和GPU在深度学习方面的性能差异

背景 字节跳动正式发布中国首个AI原生集成开发环境工具(AI IDE)——AI编程工具Trae国内版。 该工具模型搭载doubao-1.5-pro,支持切换满血版DeepSeek R1&V3, 可以帮助各阶段开发者与AI流畅协作,更快、更高质量地完…

ubuntu 20.04下ZEDmini安装使用

提前安装好显卡驱动和cuda,如果没有安装可以参考我的这两篇文章进行安装: ubuntu20.04配置YOLOV5(非虚拟机)_ubuntu20.04安装yolov5-CSDN博客 ubuntu20.04安装显卡驱动及问题总结_乌班图里怎么备份显卡驱动-CSDN博客 还需要提前…

2025数据存储技术风向标:解析数据湖与数据仓库的实战效能差距

一、技术演进的十字路口 当前全球数据量正以每年65%的复合增长率激增,IDC预测到2027年企业将面临日均处理500TB数据的挑战。在这样的背景下,传统数据仓库与新兴数据湖的博弈进入白热化阶段。Gartner最新报告显示,采用混合架构的企业数据运营效…

Spring(1)——mvc概念,部分常用注解

1、什么是Spring Web MVC? Spring MVC 是一种基于 Java 的实现了 MVC(Model-View-Controller,模型 - 视图 - 控制器)设计模式的 Web 应用框架,它是 Spring 框架的一个重要组成部分,用于构建 Web 应用程序。…

PY32MD320单片机 QFN32封装,内置多功能三相 NN 型预驱。

PY32MD320单片机是普冉半导体的一款电机专用MCU,芯片采用了高性能的 32 位 ARM Cortex-M0 内核,主要用于电机控制。PY32MD320嵌入高达 64 KB Flash 和 8 KB SRAM 存储器,最高工作频率 48 MHz。PY32MD320单片机的工作温度范围为 -40 ~ 105 ℃&…

《OkHttp:工作原理 拦截器链深度解析》

目录 一、OKHttp 的基本使用 1. 添加依赖 2. 发起 HTTP 请求 3. 拦截器(Interceptor) 4. 高级配置 二、OKHttp 核心原理 1. 责任链模式(Interceptor Chain) 2. 连接池(ConnectionPool) 3. 请求调度…

HeidiSQL:一款免费的数据库管理工具

HeidiSQL 是一款免费的图形化数据库管理工具,支持 MySQL、MariaDB、Microsoft SQL、PostgreSQL、SQLite、Interbase 以及 Firebird,目前只能在 Windows 平台使用。 HeidiSQL 的核心功能包括: 免费且开源,所有功能都可以直接使用。…

C/C++蓝桥杯算法真题打卡(Day3)

一、P8598 [蓝桥杯 2013 省 AB] 错误票据 - 洛谷 算法代码&#xff1a; #include<bits/stdc.h> using namespace std;int main() {int N;cin >> N; // 读取数据行数unordered_map<int, int> idCount; // 用于统计每个ID出现的次数vector<int> ids; …

【2025软考高级架构师】——软件工程(2)

摘要 本文主要介绍了软件工程中常见的多种软件过程模型&#xff0c;包括瀑布模型、原型模型、V模型、W模型、迭代与增量模型、螺旋模型、构件组装模型、基于构件的软件工程&#xff08;CBSE&#xff09;、快速应用开发&#xff08;RAD&#xff09;、统一过程/统一开发方法和敏…

【Vue3 Element UI - Plus + Tyscript 实现Tags标签输入及回显】

Vue3 Element Plus TypeScript 实现 Tags 标签输入及回显 在开发后台管理系统或表单页面时&#xff0c;动态标签&#xff08;Tags&#xff09; 是一个常见的功能需求。用户可以通过输入框添加标签&#xff0c;并通过关闭按钮删除标签&#xff0c;同时还需要支持标签数据的提…

Easysearch 使用 AWS S3 进行快照备份与还原:完整指南及常见错误排查

Easysearch 可以使用 AWS S3 作为远程存储库&#xff0c;进行索引的快照&#xff08;Snapshot&#xff09;备份和恢复。同时&#xff0c;Easysearch 内置了 S3 插件&#xff0c;无需额外安装。以下是完整的配置和操作步骤。 1. 在 AWS S3 上创建存储桶 登录 AWS 控制台&#x…

【CSS3】筑基篇

目录 复合选择器后代选择器子选择器并集选择器交集选择器伪类选择器 CSS 三大特性继承性层叠性优先级 背景属性背景色背景图背景图平铺方式背景图位置背景图缩放背景图固定背景复合属性 显示模式显示模式块级元素行内元素行内块元素 转换显示模式 结构伪类选择器结构伪类选择器…

【MySQL】(4) 表的操作

一、创建表 语法&#xff1a; 示例&#xff1a; 生成的数据目录下的文件&#xff1a; 二、查看表结构 三、修改表 语法&#xff1a; 另一种改表名语法&#xff1a;rename table old_name1 to new_name1, old_name2 to new_name2; 示例&#xff1a; 四、删除表 语法&#xf…

C++:string容器(下篇)

1.string浅拷贝的问题 // 为了和标准库区分&#xff0c;此处使用String class String { public :/*String():_str(new char[1]){*_str \0;}*///String(const char* str "\0") // 错误示范//String(const char* str nullptr) // 错误示范String(const char* str …

基于Harbor构建docker私有仓库

Harbor 是一个开源的企业级容器镜像仓库&#xff0c;主要用于存储、签名和扫描容器镜像。Harbor 基于 Docker Registry 构建&#xff0c;并在此基础上增加了许多企业级特性&#xff0c;以满足企业对安全性、可扩展性和易用性的需求。Harbor 的架构由多个组件组成&#xff0c;包…

阿里发布新开源视频生成模型Wan-Video,支持文生图和图生图,最低6G就能跑,ComFyUI可用!

Wan-Video 模型介绍&#xff1a;包括 Wan-Video-1.3B-T2V 和 Wan-Video-14B-T2V 两个版本&#xff0c;分别支持文本到视频&#xff08;T2V&#xff09;和图像到视频&#xff08;I2V&#xff09;生成。14B 版本需要更高的 VRAM 配置。 Wan2.1 是一套全面开放的视频基础模型&…

运动控制卡--概述学习

目录 概述 技术背景 常见的运动控制卡分类&#xff1a; 国外品牌 国内品牌 各个品牌官网 国外品牌 国内品牌 概述 运动控制卡被称作控制卡&#xff0c;只是因为它做成卡的形式&#xff0c;可以插进工控机主板上&#xff0c;一般走pci或pcie通讯。运动控制卡负责接收计算…

网络编程-----服务器(多路复用IO 和 TCP并发模型)

一、单循环服务器模型 1. 核心特征 while(1){newfd accept();recv();close(newfd);}2. 典型应用场景 HTTP短连接服务&#xff08;早期Apache&#xff09;CGI快速处理简单测试服务器 3. 综合代码 #include <stdio.h> #include <sys/types.h> /* See NO…

Java【网络原理】(3)网络编程续

目录 1.前言 2.正文 2.1ServerSocket类 2.2Socket类 2.3Tcp回显服务器 2.3.1TcpEchoServer 2.3.2TcpEchoClient 3.小结 1.前言 哈喽大家好&#xff0c;今天继续进行计算机网络的初阶学习&#xff0c;今天学习的是tcp回显服务器的实现&#xff0c;正文开始 2.正文 在…