11.任务状态查询API函数总结

一、任务相关 API 函数预览

在这里插入图片描述
在这里插入图片描述

二、任务相关 API 函数详解

在这里插入图片描述

1. 函数 uxTaskPriorityGet()

此函数用于获取指定任务的任务优先级,若使用此函数,需在 FreeRTOSConfig.h 文件中设
置配置项 INCLUDE_uxTaskPriorityGet 为 1,此函数的函数原型如下所示:

UBaseType_t uxTaskPriorityGet(const TaskHandle_t xTask);

在这里插入图片描述

2. 函数 vTaskPrioritySet()

此函数用于设置指定任务的优先级,若使用此函数,需在 FreeRTOSConfig.h 文件中设置配
置项 INCLUDE_vTaskPrioritySet 为 1,此函数的函数原型如下所示:

void vTaskPrioritySet(
 TaskHandle_t xTask,
 UBaseType_t uxNewPriority);

在这里插入图片描述

3. 函数 uxTaskGetSystemState()

此函数用于获取指定任务的状态信息,若使用此函数,需在 FreeRTOSConfig.h 文件中设置
配置项 configUSE_TRACE_FACILITY 为 1,此函数的函数原型如下所示:

UBaseType_t uxTaskGetSystemState(
 TaskStatus_t * const pxTaskStatusArray,
 const UBaseType_t uxArraySize,
 configRUN_TIME_COUNTER_TYPE * const pulTotalRunTime);

在这里插入图片描述
函数 uxTaskGetSystemState()的形参 pxTaskStatusArray 指向变量类型为 TaskStatus_t 的变量
的首地址,可以是一个数组,用来存放多个TaskStatus_t类型的变量,函数 uxTaskGetSystemState()
使用将任务的状态信息,写入到该数组中,形参 uxArraySize 指示该数组的大小,其中变量类型
TaskStatus_t 的定义如下所示:

typedef struct xTASK_STATUS
{
 TaskHandle_t xHandle; /* 任务句柄 */
 const char * pcTaskName; /* 任务名 */
 UBaseType_t xTaskNumber; /* 任务编号 */
 eTaskState eCurrentState; /* 任务状态 */
 UBaseType_t uxCurrentPriority; /* 任务优先级 */
 UBaseType_t uxBasePriority; /* 任务原始优先级 */
 configRUN_TIME_COUNTER_TYPE ulRunTimeCounter; /* 任务被分配的运行时间 */
 StackType_t * pxStackBase; /* 任务栈的基地址 */
 configSTACK_DEPTH_TYPE usStackHighWaterMark; /* 任务栈历史剩余最小值 */
} TaskStatus_t;

该结构体变量就包含了任务的一些状态信息,获取到的每个任务都有与之对应的
TaskStatus_t 结构体来保存该任务的状态信息。

4. 函数 vTaskGetInfo()

此函数用于获取指定任务的任务信息,若使用此函数,需在 FreeRTOSConfig.h 文件中设置
配置项 configUSE_TRACE_FACILITY 为 1,此函数的函数原型如下所示:

void vTaskGetInfo(
 TaskHandle_t xTask,
 TaskStatus_t * pxTaskStatus,
 BaseType_t xGetFreeStackSpace,
 eTaskState eState);

函数 vTaskGetInfo()的形参描述,如下表所示:
在这里插入图片描述
函数 vTaskGetInfo()的形参 eState 用来表示任务的状态,其变量类型为 eTaskState,变量类
型 eTaskState 的定义如下所示:

typedef enum
{
 eRunning = 0, /* 运行态 */
 eReady, /* 就绪态 */
 eBlocked, /* 阻塞态 */
 eSuspended, /* 挂起态 */
 eDeleted, /* 任务被删除 */
 eInvalid /* 非法值 */
} eTaskState;

形参 eState 用于决定形参 pxTaskStatus 结构体中成员变量 eCurrentState 的值,表示任务的
状态,如果传入的 eState 为 eInvalid,那么 eCurrentState 为任务当前的状态,否则 eCurrentState
为 eState。

5. 函数 xTaskGetApplicationTaskTag()

此函数用于获取指定任务的 Tag,若使用此函数,需在 FreeRTOSConfig.h 文件中设置配置
项 configUSE_APPLICATION_TASK_TAG 为 1,此函数的函数原型如下所示:

TaskHookFunction_t xTaskGetApplicationTaskTag(TaskHandle_t xTask);

在这里插入图片描述

6. 函数 xTaskGetCurrentHandle()

此函数用于获取当前 系统正在运行的 任务的任务句柄, 若使用此函数,需 在
FreeRTOSConfig.h 文件中设置配置项 INCLUDE_xTaskGetCurrentTaskHandle 为 1,此函数的函
数原型如下所示:

TaskHandle_t xTaskGetCurrentTaskHandle(void);

函数 xTaskGetCurrentTaskHandle()无形参。
函数 xTaskGetCurrentTaskHandle()的返回值,如下表所示:
在这里插入图片描述

7. 函数 xTaskGetHandle()

此函数用于通过任务名获取任务句柄,若使用此函数,需在 FreeRTOSConfig.h 文件中设置
配置项 INCLUDE_xTaskGetHandle 为 1,此函数的函数原型如下所示:

TaskHandle_t xTaskGetHandle(const char * pcNameToQuery);

在这里插入图片描述

8. 函数 xTaskGetIdleTaskHandle()

此函数用于获取空闲任务的任务句柄,若使用此函数,需在 FreeRTOSConfig.h 文件中设置
配置项 INCLUDE_xTaskGetIdleTaskHandle 为 1,此函数的函数原型如下所示:

TaskHandle_t xTaskGetIdleTaskHandle(void);

函数 xTaskGetIdleTaskHandle()无形参。
函数 xTaskGetIdleTaskHandle()的返回值,如下表所示:
在这里插入图片描述

9. 函数 uxTaskGetStackHighWaterMark()

此函数用于获取指定任务 的 任务栈的历史剩余最小值, 若 使用此函数 , 需 在
FreeRTOSConfig.h 文件中设置配置项 INCLUDE_uxTaskGetStackHighWaterMark 为 1,此函数的
函数原型如下所示:

UBaseType_t uxTaskGetStackHighWaterMark(TaskHandle_t xTask);

在这里插入图片描述

10. 函数 eTaskGetState()

此函数用于获取指定任务的状态,若使用此函数,需在 FreeRTOSConfig.h 文件中设置配置
项 INCLUDE_eTaskGetState 为 1,此函数的函数原型如下所示:

eTaskState eTaskGetState(TaskHandle_t xTask);

在这里插入图片描述
函数 eTaskGetState()的返回值,如下表所示:
在这里插入图片描述

11. 函数 pcTaskGetName()

此函数用于获取指定任务的任务名,此函数的函数原型如下所示:

char * pcTaskGetName(TaskHandle_t xTaskToQuery);

函数 pcTaskGetName()的形参描述,如下表所示:
在这里插入图片描述

12. 函数 xTaskGetTickCount()

此函数用于获取系统时钟节拍计数器的值,此函数的函数原型如下所示:

volatile TickType_t xTaskGetTickCount(void);

函数 xTaskGetTickCount()无形参。
函数 xTaskGetTickCount()的返回值,如下表所示
在这里插入图片描述

13. 函数 xTaskGetTickCountFromISR()

此函数用于在中断中获取系统时钟节拍计数器的值,此函数的函数原型如下所示:

volatile TickType_t xTaskGetTickCountFromISR(void);

函数 xTaskGetTickCountFromISR()无形参。
函数 xTaskGetTickCountFromISR()的返回值,如下表所示:
在这里插入图片描述

14. 函数 xTaskGetSchedulerState()

此函数用于获取任务调度器的运行状态,此函数的函数原型如下所示:

BaseType_t xTaskGetSchedulerState(void);

函数 xTaskGetSchedulerState()无形参。
函数 xTaskGetSchedulerState()的返回值,如下表所示:
在这里插入图片描述

15. 函数 uxTaskGetNumberOfTasks()

此函数用于获取系统中任务的数量,此函数的函数原型如下所示:

UBaseType_t uxTaskGetNumberOfTasks(void);

函数 uxTaskGetNumberOfTasks()无形参。
函数 uxTaskGetNumberOfTasks()的返回值,如下表所示:
在这里插入图片描述

16. 函数 vTaskList()

此函数用于以“表格”的形式获取系统中任务的信息,若使用此函数,需在 FreeRTOSConfig.h
文 件 中 同 时 设 置 配 置 项 configUSE_TRACE_FACILITY 和配置项
configUSE_STATS_FORMATTING_FUNCTIONS 为 1,此函数的函数原型如下所示:

void vTaskList(char * pcWriteBuffer);

函数 vTaskList()的形参描述,如下表所示:
在这里插入图片描述

17. 函数 vTaskGetRunTimeStats()

此函数用于获取指定任务的运行时间、运行状态等信息,若使用此函数,需在
FreeRTOSConfig.h 文 件 中 同 时 设 置 配 置 项 configGENERATE_RUN_TIME_STAT 、
configUSE_STATS_FORMATTING_FUNCTIONS、configSUPPORT_DYNAMIC_ALLOCATION
为 1,此函数的函数原型如下所示:

void vTaskGetRunTimeStats(char * pcWriteBuffer);

函数 vTaskGetRunTimeState()的形参描述,如下表所示:
在这里插入图片描述

18. 函数 vTaskSetApplicationTaskTag()

此函数用于设置指定任务的 Tag,若使用此函数,需在 FreeRTOSConfig.h 文件中设置配置
项 configUSE_APPLICATION_TASK_TAG 为 1,此函数的函数原型如下所示:

void vTaskSetApplicationTaskTag(
 TaskHandle_t xTask,
 TaskHookFunction_t pxTagValue);

函数 vTaskSetApplicationTaskTag()的形参描述,如下表所示:
在这里插入图片描述

19. 函数 SetThreadLocalStoragePointer()

此函数用于设置指定任务的独有数据数组指针,此函数的函数原型如下所示:

void vTaskSetThreadLocalStoragePointer(
 TaskHandle_t xTaskToSet,
 BaseType_t xIndex,
 void * pvValue)

函数 SetThreadLocalStoragePointer()的形参描述,如下表所示:
在这里插入图片描述

20. 函数 GetThreadLocalStoragePointer()

此函数用于获取指定任务的独有数据数组指针,此函数的函数原型如下所示:

void *pvTaskGetThreadLocalStoragePointer(
 TaskHandle_t xTaskToQuery,
 BaseType_t xIndex);

函数 GetThreadLocalStoragePointer()的形参描述,如下表所示:
在这里插入图片描述

三、相关实验

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

我和jetson-Nano的故事(12)——安装pytorch 以及 torchvision

在jetson nano中安装Anaconda、pytorch 以及 torchvision 1.Pytorch下载安装2.Torchvision安装 1.Pytorch下载安装 首先登录英伟达官网下载Pytorch安装包,这里以PyTorch v1.10.0为例 安装依赖库 sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev liba…

HNU-人工智能-2024期末考试回忆

前言 后知后觉,似乎是别的专业的往年试题拿来复用,我没刷到,比较吃亏。 最后一题把数据改的很恶心,让我cosplay成GPU,算3个5*5的卷积核,简直恶心。根本没时间算完。 整场考试体验还挺差的。主要是老师缝…

FreeRTOS【7】队列使用

1.开发背景 操作系统提供了多线程并行的操作,为了方便代码的维护,各个线程都分配了专用的内存并处理对应的内容。但是线程间也是需要协助操作的,例如一个主线程接收信息,会把接收的信息并发到其他线程,即主线程不阻塞&…

helm离线安装

目录 概述实践 概述 centos 7.x 离线安装 helm 3.14.4 版本 实践 离线包资源下载地址 github [roothadoop01 ~]# tar -xvf helm-v3.14.4-linux-amd64.tar.gz linux-amd64/ linux-amd64/README.md linux-amd64/LICENSE linux-amd64/helm [roothadoop01 ~]# mv ./linux-amd…

Deepin Linux 深度 V23 beige 官方源及换镜像源方法。

Deepin Linux 深度 V23 英文版本号:beige 谁起的烂名字。。。。。。 1. 打开文件管理器,在apt文件夹点右键(以管理员身份打开), 2. 输入你的登录密码,以便打开文件夹(管理员权限)。…

【会议征稿,JPCS出版】2024年航空航天与力学国际学术会议(ICAM 2024)

2024年航空航天与力学国际学术会议(ICAM 2024)将于2024年7月12-14日在中国沈阳举办。会议由东北大学机械工程与自动化学院主办,吉林大学机械与航空航天工程学院承办,大连理工大学、沈阳航空航天大学、沈阳建筑大学、沈阳工业大学、…

微火全域运营平台成优选,业内人士纷纷研究!

随着全域运营赛道的兴盛,越来越多的全域运营平台陆续上线,拓宽全域运营服务商选择空间的同时,也让全域运营平台选择成为了他们最为头疼的问题。在此背景下,各大全域运营平台背后的研发公司开始各出奇招,以获得更多全域…

MVCC 原理分析、MySQL是如何解决幻读的

文章目录 一、前言回顾1.1 事务四大特性ACID1.2 并发事务问题1.3 事务隔离级别 二、MVCC2.1 为什么使用MVCC2.2 基本概念——当前读、快照读、MVCC2.2.1 当前读2.2.2 快照读2.2.3 MVCC 2.3 隐藏字段—— TRX_ID、ROLL_PTR2.4 undo log2.4.1 介绍2.4.2 版本链 2.5 Read View读视…

【EI会议】2024年机电一体、电力与电气国际会议(ICMPE 2024)

2024年机电一体、电力与电气国际会议 2024 International Conference on Mechatronics, Power and Electrical 【1】会议简介 2024年机电一体、电力与电气国际会议即将召开,这是一场集结全球机电一体、电力与电气领域精英的学术盛宴。 本次会议旨在探讨机电一体、电…

FloodFill 算法 (下)

目录 太平洋大西洋水流问题 题解: 扫雷游戏 题解: 衣橱整理 太平洋大西洋水流问题 417. 太平洋大西洋水流问题 - 力扣(LeetCode) 题解: 如果从区域内某一个位置出发,需要向左、向上走判断是否能到达…

WordPress子比主题美化-首页动态的图片展示

WordPress子比主题首页动态的图片展示 WordPress子比主题首页添加动态的图片展示,其他程序也可以用,复制代码到相应位置即可,也可作为指定分类,重点内容等,可以适合各个场景,需要的自取。 图片展示: 教程…

香橙派AIpro开发板初体验

香橙派AIpro开发板初体验 一、引言 在当前的AI发展浪潮中,边缘计算逐渐成为了研究的热点。香橙派AIpro开发板作为一款基于昇腾AI技术的开发板,凭借其强大的算力和丰富的接口,为AI边缘计算提供了强大的支持。最近,我也是拿到了官…

工作中有哪些超级好用的C/C++程序库?

视频和讲义发布在这里: B站链接

【Linux进程篇】Linux内核——程序地址空间的初构

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; 程序地址空间回顾 我们在讲C语言的时候&#xff0c;大家应该都见过这样的空间布局图&#xff1a; 为了更好的验证不同的数据在内存中的存储位置&#xff0c;下面这段代码我们可以去实验一下&#xff1a; #include<…

通过ESP32芯片模组实现产品智能化升级,启明云端乐鑫代理商

随着科技的不断进步&#xff0c;物联网&#xff08;IoT&#xff09;已经渗透到我们生活的方方面面&#xff0c;成为现代生活不可或缺的一部分。在这场智能化革命中&#xff0c;乐鑫科技以其创新的ESP32芯片模组&#xff0c;为智能家居和智能设备的发展注入了新的活力。作为乐鑫…

【Flutter】交错动画自定义动画Hero动画

&#x1f525; 本文由 程序喵正在路上 原创&#xff0c;CSDN首发&#xff01; &#x1f496; 系列专栏&#xff1a;Flutter学习 &#x1f320; 首发时间&#xff1a;2024年5月29日 &#x1f98b; 欢迎关注&#x1f5b1;点赞&#x1f44d;收藏&#x1f31f;留言&#x1f43e; 目…

虚拟化概述

虚拟存储器(Virtual Memory) 它的基本思想是对于一个程序来说,它的程序(code)、数据(data)和堆栈(stack)的总大小可以超过实际物理内存的大小&#xff1b;操作系统把当前使用的部分内容放到物理内存中&#xff0c;而把其他未使用的内容放到更下一级存储器&#xff0c;如硬盘&a…

Windows电脑高颜值桌面便利贴,便签怎么设置

在这个看颜值的时代&#xff0c;我们不仅在衣着打扮上追求时尚与美观&#xff0c;就连电脑桌面也不愿放过。一张唯美的壁纸&#xff0c;几款别致的小工具&#xff0c;总能让我们的工作空间焕发出不一样的光彩。如果你也热衷于打造高颜值的电脑桌面&#xff0c;那么&#xff0c;…

积鼎CFDPro水文水动力模型,专为中小流域洪水“四预”研发的流体仿真技术

水动力模型与水文模型是水利工程与水文学研究中不可或缺的两大工具。水动力模型着重于流体运动的动力学机制&#xff0c;通过一系列方程组捕捉水流的时空变化&#xff0c;而概念性水文模型则侧重于流域尺度的水文循环过程&#xff0c;利用物理概念与经验关系进行近似模拟。两者…

OpenBuild推出Sui Quiz任务,瓜分500SUI奖励

Quiz 功能 让用户可以&#xff1a; - 测试对某个知识点的理解力&#xff1b; 通过测试后获得 NFT 凭证&#xff0c;未来该凭证可用于求职认可、Bounty 任务、空投门槛。 Sui 是一个高性能的去中心化平台&#xff0c;旨在解决传统区块链系统中的可扩展性和效率问题。其独特的架…