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()的形参描述,如下表所示:
在这里插入图片描述

三、相关实验

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

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

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

相关文章

mybatis异常:Invalid bound statement (not found): com.lm.mapper.ArticleMapper.list

现象: 原因: 无效绑定,应该是mybatis最常见的一个异常了,接口与XML文件没绑定。首先,mapper接口并没有实现类,所以框架会通过JDK动态代理代理模式获取接口的代理实现类,进而根据接口全限定类名…

适合多种苛刻环境的惯性测量单元M-G370PDS

全球IMU市场d在汽车和机器人技术进步和不断增长的应用需求,保持着高速增长的趋势,其中航空航天、国防和汽车等行业对高精度、稳定和紧凑的IMU需求尤为强烈,这些行业对精度和可靠性的高要求直接影响了相关技术的发展方向。 爱普生惯性测量单…

一次绕过waf进行xss的经历

今天室友遇到一个好玩的网站,下面是一些尝试绕过Waf进行XSS的记录。首先该网站没有对左右尖号和单双引号做任何过滤或转义。且有未知的waf或者其他阻止恶意访问的手段。 首先我的访问为 login.asp?f1 时候,页面关键源码为 可能是表示登录次数的一个东西…

01_Spring Ioc(详解) + 思维导图

文章目录 一.概念实操Maven父子工程 二. IOC和DI入门案例【重点】1 IOC入门案例【重点】问题导入1.1 门案例思路分析1.2 实现步骤2.1 DI入门案例思路分析2.2 实现步骤2.3 实现代码2.4 图解演示 三、Bean的基础配置问题导入问题导入1 Bean是如何创建的【理解】2 实例化Bean的三种…

【ai】livekit:Agents 4: livekit-plugins-openai和LiveKit Plugins Silero安装与分析

先提高下性能然后本文 继续按照 上一篇【ai】livekit:Agents 3 : pythonsdk和livekit-agent的可编辑模式下的安装构建 livekit-gent的插件。pycharm 工程 配置Microsoft Defender 排除列表 livekit-plugins-openai 本地安装

Tensorflow 2.0 安装过程

第一步:进入国内清华软件网站 anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirroranaconda 使用帮助 | 镜像站使用帮助 | 清华大学开源软件镜像站,致力于为国内和校内用户提供高质量的开源软件镜像、Linux 镜像源服务&…

九章云极DataCanvas公司重磅亮相第七届数字中国建设峰会

近日,由国家发展改革委、国家数据局、国家网信办、科技部、国务院国资委、福建省人民政府共同主办的第七届数字中国建设峰会在福州盛大举行,九章云极DataCanvas公司重磅亮相峰会现场,深度展示智算中心建设核心成果及“算法算力”一体化AI智算…

最简单的安卓模拟器抓包?

安装模拟器抓包似乎是有个绕不开的话题,但是现在普遍的安卓模拟器抓包会遇到以下问题: 1.证书配置繁琐 2.模拟器不兼容软件 3.系统设置繁琐。 前几天写过一次微信小程序如何抓包,现在来讲一下模拟器怎么抓包吧。首先使用的工具还是TangGo测…

ADF: 获取Data Lake Storage上的文件列表并根据文件名删除文件

假设 Data Lake 上有个test的文件夹,有如下文件 目标:使用Azure Data Factory的Pipeline获取这个目录下的文件名列表,并删除掉以"ETC"开头的文件。 步骤: 1. 需要在Linked services中新建一个能连接到Data Lake的连接…

人工智能应用-实验5-BP 神经网络分类手写数据集

文章目录 🧡🧡实验内容🧡🧡🧡🧡代码🧡🧡🧡🧡分析结果🧡🧡🧡🧡实验总结🧡🧡 &#x1f9…

windows 安装 使用 nginx

windows 安装 使用 nginx nginx官网下载地址:https://nginx.org/en/download.html 下载稳定版本即可 下载压缩包解压到即可 进入文件夹中,打开命令行窗口,执行启动命令 start nginx.exe验证(默认是80端口)&#x…

工程项目管理系统的Java实现:高效协同与信息共享

在当今的工程领域,项目管理的高效协同和信息共享是提升工作效率、降低成本的关键。本文将向您介绍一款基于Java技术构建的工程项目管理系统,该系统采用前后端分离的先进技术框架,功能全面,能够满足不同角色的需求,从项…

失落的方舟 命运方舟台服账号怎么注册 游戏账号最全图文注册教程

探索奇幻大陆阿克拉西亚的奥秘,加入《失落的方舟》(Lost Ark)这场史诗般的冒险。这是一款由Smilegate精心雕琢的MMORPG巨作,它融合了激烈动作战斗与深邃故事叙述,引领玩家步入一个因恶魔侵袭而四分五裂的世界。作为勇敢…

How Diffusion Models Work

introduction intuition goal 让神经网络学到图像是什么样的,一种方式是对数据添加不同级别的噪音,让神经网络能够区分细节/总体轮廓 训练一个神经网络去产生精灵 sampling nn

618局外人抖音:别人挤压商家“拼价格”,它默默联合商家“抢用户”?

文|新熔财经 作者|宏一 “618”来临之际,各电商平台和短视频平台早已打响了“促销大战”。不过,今年各大平台都更积极适应新的消费形式,调整了“大促动作”。 比如淘宝、京东带头取消了沿用十年之久的预售机制&…

Stream流模式通信及示例

Stream流模式通信是指在计算机网络中,数据作为连续的字节流传输而不是独立的数据包。它是一种面向连接的通信方式,常见于TCP(传输控制协议)。以下是Stream流模式通信的基本概念和一个简单的示例。 基本概念 面向连接&#xff1…

apollo版本更新简要概述

apollo版本更新简要概述 Apollo 里程碑版本9.0重要更新Apollo 开源平台 9.0 的主要新特征如下:基于包管理的 PnC 扩展开发范式基于包管理的感知扩展开发范式全新打造的 Dreamview Plus 开发者工具感知模型全面升级,支持增量训练 版本8.0版本6.0 Apollo 里…

异步编程的魔力:如何显著提升系统性能

异步编程的魔力:如何显著提升系统性能 今天我们来聊聊一个对开发者非常重要的话题——异步编程。异步编程是提升系统性能的一种强大手段,尤其在需要高吞吐量和低时延的场景中,异步设计能够显著减少线程等待时间,从而提升整体性能。 异步设计如何提升系统性能? 我们通过…

文件IO(二)

文件IO(二) 标准IO缓冲类型全缓冲行缓冲不缓冲 打开文件fopen 操作文件按字符读写(fgetc fputc)按行读写(fgets fputs)按块(对象)读写(fread fwrite)按格式化读写(fscanf…

stm32学习-CubeIDE使用技巧

1.hex文件生成 右键工程 2.仿真调试 3.常用快捷键 作用快捷键代码提示alt/代码注释/反注释ctrl/ 4.项目复制 复制项目,将ioc文件名改为项目名即可图形化编辑