FreeRTOS系列|任务相关API函数

2023-05-16

任务相关API函数

1. 任务相关API函数

FreeRTOS中有很多与任务相关的API函数,大多数是辅助函数。下表是这些与任务相关的API函数功能和描述简介

函数名功能描述
uxTaskPriorityGet()查询某个任务的优先级
vTaskPrioritySet()改变某个任务的优先级
uxTaskGetSystemState()获取系统中任务状态
vTaskGetInfo()获取某个任务信息
xTaskGetApplicationTaskTag()获取某个任务的标签值
xTaskGetCurrentTaskHandle()获取当前正在运行任务的任务句柄
xTaskGetHandle()根据任务名字查找某个任务的句柄
xTaskGetIdleTaskHandle()获取空闲任务的句柄
uxTaskGetStackHighWaterMark()获取任务的堆栈的历史剩余最小值,也叫高水位线
eTaskGetState()获取某个任务的状态,该状态时eTaskState类型
pcTaskGetName()获取某个任务的任务名字
xTaskGetTickCount()获取系统时间计数器值
xTaskGetTickCountFromISR()在中断服务函数中获取时间计数器值
xTaskGetSchedulerState()获取任务调度器的状态,开启或未开启
uxTaskGetNumberOfTask()获取当前系统中存在的任务数量
vTaskList()以表格的形式输出当前系统中所有任务的详细信息
vTaskGetRunTimeStats()获取每个任务的运行时间
vTaskSetApplicationTaskTag()设置任务标签值
vTaskSetThreadLocalStoragePointer()设置线程本地存储指针
pvTaskGetThreadLocalStoragePointer()获取线程本地存储指针

2. 任务相关API函数详解

  • uxTaskPriorityGet():查询某个任务的优先级
/*****************************相关宏的配置*****************************/
#define INCLUDE_uxTaskPriorityGet 			 必须置为1
/*******************************函数原型*******************************/
函数原型:UBaseType_t uxTaskPriorityGet(TaskHandle_t xTask)
传 入 值:xTask 要查找的任务的任务句柄
返 回 值:获取到的对应的任务的优先级
  • vTaskPrioritySet() :改变某个任务的优先级
/*****************************相关宏的配置*****************************/
#define INCLUDE_vTaskPrioritySet 			 必须置为1
/*******************************函数原型*******************************/
函数原型:void vTaskPrioritySet(TaskHandle_t xTask,UBaseType_t uxNewPriority)
传 入 值:xTask 要更改优先级的任务的任务句柄
		 uxNewPriority 任务要使用的新的优先级
  • uxTaskGetSystemState() :获取系统中所有任务的任务状态,每个任务的状态信息保存在一个TaskStatus_t类型的结构体里,这个结构体包含了任务句柄、任务名称、堆栈、优先级等信息
/*****************************相关宏的配置*****************************/
#define configUSE_TRACE_FACILITY 			 必须置为1
/*******************************函数原型*******************************/
函数原型:UBaseType_t uxTaskGetSystemState(TaskStatus_t *const pxTaskStatusArray,
										  const UBaseType_t uxArraySize,
										  uint32_t *const pulTotalRunTime)
传 入 值:pxTaskStatusArray 指向TaskStatus_t结构体类型的数组首地址
		 uxArraySize 	   保存任务状态数组的大小
		 pulTotalRunTime   若开启了系统运行时间统计,则用来保存系统总的运行时间
返 回 值:统计到的任务状态的个数,也就是填写到数组pxTaskStatusArray中的个数
/*****TaskStatus_t结构体*****/
typedef struct xTASK_STATUS{
	TaskHandle_t	xHandle;	//任务句柄
	const char*		pcTaskName;	//任务名字
	UBaseType_t		xTaskNumber;	//任务编号
	eTaskState		eCurrentState;	//当前任务状态
	UBaseType_t		uxCurrentPriority;	//任务当前的优先级
	UBaseType_t		uxBasePriority;		//任务基础优先级
	uint32_t		ulRunTimeCounter;	//任务运行的总时间
	StackType_t*	pxStackBase;	//堆栈基地址
	uint16_t		usStackHighWaterMark;//任务创建依赖任务堆栈剩余的最小值
}TaskStatus_t;
  • vTaskGetInfo() :获取某个指定的单个任务的任务信息
/*****************************相关宏的配置*****************************/
#define configUSE_TRACE_FACILITY 			 必须置为1
/*******************************函数原型*******************************/
函数原型:void vTaskGetInfo(TaskHandle_t	xTask,
						   TaskStatus_t* pxTaskStatus,
						   BaseType_t xGetFreeStackSpace,
						   eTaskState eState)
传 入 值:xTask 要查找的任务的任务句柄
		 pxTaskStatus 指向类型为TaskStatus_t结构体变量
		 xGetFreeStackSpace 堆栈剩余的历史最小值
		 eState 保存任务运行状态 
  • xTaskGetApplicationTaskTag() :获取某个任务的标签值
/*****************************相关宏的配置*****************************/
#define configUSE_APPLICATION_TASK_TAG	 必须置为1
/*******************************函数原型*******************************/
函数原型:void xTaskGetApplicationTaskTag(TaskHandle_t xTask)
传 入 值:xTask 要获取标签值的任务的任务句柄,若为NULL表示获取当前任务的标签值
返 回 值:任务的标签值
  • xTaskGetCurrentTaskHandle() :获取当前正在运行任务的任务句柄,其实获取到的就是任务控制块
/*****************************相关宏的配置*****************************/
#define INCLUDE_xTaskGetCurrentTaskHandle	必须置为1
/*******************************函数原型*******************************/
函数原型:TaskHandle_t xTaskGetCurrentTaskHandle(void)
返 回 值:当前任务的任务句柄
  • xTaskGetHandle() :根据任务名字查找某个任务的句柄
/*****************************相关宏的配置*****************************/
#define INCLUDE_xTaskGetHandle	必须置为1
/*******************************函数原型*******************************/
函数原型:TaskHandle_t xTaskGetHandle(const char* pcNameToQuery)
传 入 值:pcNameToQuery 任务名
返 回 值:任务名所对应的任务句柄;返回NULL表示没有对应的任务
  • xTaskGetIdleTaskHandle() :获取空闲任务的句柄
/*****************************相关宏的配置*****************************/
#define INCLUDE_xTaskGetIdleTaskHandle	必须置为1
/*******************************函数原型*******************************/
函数原型:TaskHandle_t xTaskGetIdleTaskHandle(void)
返 回 值:空闲任务的任务句柄
  • uxTaskGetStackHighWaterMark() :每个任务在创建的时候就确定了堆栈大小,此函数用于检查任务从创建好到现在的历史剩余最小值,这个值越小说明任务堆栈溢出的可能性就越大
/*****************************相关宏的配置*****************************/
#define INCLUDE_uxTaskGetStackHighWaterMark	必须置为1
/*******************************函数原型*******************************/
函数原型:UBaseType_t uxTaskGetStackHighWaterMark(TaskHandle_t xTask)
传 入 值:xTask 要查询的任务的任务句柄,若为NULL表示查询自身任务的高水位线
返 回 值:任务堆栈的高水位线值,即堆栈的历史剩余最小值
  • eTaskGetState() :获取某个任务的状态,比如:运行态、阻塞态、挂起态、就绪态等
/*****************************相关宏的配置*****************************/
#define INCLUDE_eTaskGetState	必须置为1
/*******************************函数原型*******************************/
函数原型:eTaskState eTaskGetState(TaskHandle_t xTask)
传 入 值:xTask 要查询的任务的任务句柄
返 回 值:返回eTaskState枚举类型值
  • pcTaskGetName() :根据任务句柄来获取该任务的任务名字
/*******************************函数原型*******************************/
函数原型:char* pcTaskGetName(TaskHandle_t xTaskToQuery)
传 入 值:xTaskToQuery 要查询的任务的任务句柄,若为NULL表示查询自身任务名
返 回 值:返回任务所对应的任务名
  • xTaskGetTickCount() :用于查询任务调度器从启动到现在时间计数器xTickCount的值。xTickCount是系统的时钟节拍值,并不是真实的时间值。每个滴答定时器中断xTickCount就会加一,中断周期取决于系统时钟节拍数
/*******************************函数原型*******************************/
函数原型:TickType_t xTaskGetTickCount(void)
返 回 值:时间计数器xTickCount的值
  • xTaskGetTickCountFromISR() :在中断服务函数中获取时间计数器值
/*******************************函数原型*******************************/
函数原型:TickType_t xTaskGetTickCountFromISR(void)
返 回 值:时间计数器xTickCount的值
  • xTaskGetSchedulerState() :获取任务调度器的状态,开启、关闭还是挂起
/*****************************相关宏的配置*****************************/
#define INCLUDE_xTaskGetSchedulerState	必须置为1
/*******************************函数原型*******************************/
函数原型:BaseType_t xTaskGetSchedulerState(void)
返 回 值:taskCHEDULER_NOT_STARTED 调度器未启动
		 taskCHEDULER_RUNNING 调度器正在运行
		 taskCHEDULER_SUSPENDED 调度器挂起
  • uxTaskGetNumberOfTask() :获取当前系统中存在的任务数量
/*******************************函数原型*******************************/
函数原型:UBaseType_t uxTaskGetNumberOfTask(void)
返 回 值:当前系统中存在的任务数量,此值包含各种状态下的任务数
  • vTaskList() :以表格的形式输出当前系统中所有任务的详细信息
/*******************************函数原型*******************************/
函数原型:void vTaskList(char *pcWriteBuffer)
传 入 值:pcWriteBuffer 保存任务状态信息表的存储区
  • vTaskGetRunTimeStats() :获取每个任务的运行时间
/*****************************相关宏的配置*****************************/
#define configGENERATE_RUN_TIME_STATS 			 必须置为1
#define configUSE_STATS_FORMATTING_FUNCTIONS	 必须置为1
/*******************************函数原型*******************************/
函数原型:void vTaskGetRunTimeStats(char *pcWriteBuffer)
传 入 值:pcWriteBuffer 保存任务时间信息的存储区
  • vTaskSetApplicationTaskTag() :用于设置某个任务的标签值
/*****************************相关宏的配置*****************************/
#define configUSE_APPLICATION_TASK_TAG	 必须置为1
/*******************************函数原型*******************************/
函数原型:void vTaskSetApplicationTaskTag(TaskHandle_t xTask,
								   TaskHookFunction_t pxHookFunction)
传 入 值:xTask 要要设置标签值的任务的任务句柄
		 pxHookFunction 要设置的标签值
  • vTaskSetThreadLocalStoragePointer() :设置线程本地存储指针的值,每个任务都有自已的指针数组作为线程本地存储,使用这些线程本地存储可以用来在任务控制块中存储一些只属于任务自已的应用信息
/*****************************相关宏的配置*****************************/
#define configNUM_THREAD_LOCAL_STORAGE_POINTERS	 本地存储指针数组的大小
/*******************************函数原型*******************************/
函数原型:void vTaskSetThreadLocalStoragePointer(TaskHandle_t xTaskToSet,
												BaseType_t xIndex,
												void* pvValue)
传 入 值:xTaskToSet 要设置线程本地存储指针的任务的任务句柄
		 xIndex 要设置的线程本地存储指针数组的索引
		 pvValue 要存储的值
  • pvTaskGetThreadLocalStoragePointer() :获取线程本地存储指针
/*****************************相关宏的配置*****************************/
#define configNUM_THREAD_LOCAL_STORAGE_POINTERS	 本地存储指针数组的大小
/*******************************函数原型*******************************/
函数原型:void *pvTaskGetThreadLocalStoragePointer(TaskHandle_t xTaskToQuery,
                                 				  BaseType_t xIndex )
传 入 值:xTaskToQuery 要获取线程本地存储指针的任务的任务句柄
		 xIndex 要获取的线程本地存储指针数组的索引

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FreeRTOS系列|任务相关API函数 的相关文章

  • 为 NFL api 生成访问令牌

    NFL 有一个 API 服务 link https api nfl com docs getting started index html https api nfl com docs getting started index html
  • 生产者程序中的 kafka 网络处理器错误(ArrayIndexOutOfBoundsException:18)

    我有下面的 kafka Producer Api 程序 我对 kafka 本身是新手 下面的代码从 API 之一获取数据并将消息发送到 kafka 主题 package kafka Demo import java util Propert
  • 将 CURL 命令行转换为 VBA

    在 CURL 中 我可以使用这一行 curl data DataToBeSent https example com resource cgi 我正在努力将此类行转换为在 VBA 中使用 这是我到目前为止的尝试 Sub POST Metho
  • 循环选项在 youtube js api 中不起作用

    我想知道为什么我的代码不循环播放视频 除了循环选项之外 一切正常 我真的需要它 多谢 div You need Flash player 8 and JavaScript enabled to view this video div
  • musicbrainz api 获取所有发行组和发行日期

    如何使用 musicbrainz api 在一次调用中获取艺术家的所有发行组和发行日期 我最接近做到这一点的是使用 http musicbrainz org ws 2 release group query arid 494e8d09 f8
  • 如何使用远程访问 API 获取 jenkins 的系统配置

    詹金斯提供了很好的远程访问API https wiki jenkins ci org display JENKINS Remote access API 可用于获取大量信息 例如作业和视图 我想知道是否或如何从远程访问 API 获取系统 全
  • 如何使用 blazor 前端 http 请求附加令牌

    我使用 blazor 作为前端 api 已完成 JWT 配置 前端可以创建用户帐户并登录API 但现在我的前端httpclient没有设置JWT令牌 所以如果我在Api控制器中设置 授权 前端将无法访问它 api程序代码如下 builder
  • PowerShell-V5 Invoke-Webrequest 添加 2 个标头授权标头和接受接受标头

    我正在尝试创建一个脚本 该脚本将使用 powershell 和 invoke webrequest 自动升级 NSX 以利用 NSX Manager 的 API 调用 我已经完成了脚本 但脚本的某些部分我需要检查并匹配响应中的某些数据 事实
  • Rails api 中阻止用户配置文件的最佳 HTTP 状态代码是什么?

    我在 Rails 中为社交应用程序编写了一个 API 这个应用程序就像Facebook一样 用户可以阻止其他用户 如果用户 A 阻止用户 B 则用户 B 无法查看用户 A 的个人资料页面 那么我应该返回的最佳 HTTP 代码状态是什么 40
  • Google API 令牌端点 POST 返回错误请求 400

    我正在尝试用一次性 Google Plus 授权代码换取访问令牌 但我不断收到 400 Bad Request 我正在使用VB NET 这是代码 We should now have a good one time authorizatio
  • 请放心,如何在 POST 请求后从响应正文中提取生成的令牌并将其设置到标头

    执行任何请求 我需要执行身份验证POST请求正文 username somename password somepass 标头Content Type application json这给了我一个带有生成令牌的响应 我需要将其粘贴为第二个标
  • 为什么 Twitter API 返回错误的推文 ID?

    我使用 Twitter API 来检索用户主页时间线推文 我使用 json 响应格式 最近推文 ID 在 API 中只是 id 被重新调整错误 举个例子 通常它应该像这样返回 id 14057503720 示例来自twitter控制台 但是
  • 在 Java 中处理视频(DVD、.avi .mkv)

    在寻找了一个像样的 Java 视频播放库之后 我发现了问题 周围的每个人都在尖叫不要使用 JMF 因为它已经过时 过时并且需要用户安装它 其他替代方案 例如 VLCJ 如果可以工作的话似乎不错 但仍然相对不稳定并且依赖大量本机代码 并且至于
  • 在哪里以及如何安装 twitter 的 Python API?

    我访问了 Twitter 的 API 它把我重定向到了谷歌代码 但网站不在那里 有其他替代的 Twitter API 以及教程吗 谢谢 尝试推推 http code google com p tweepy http code google
  • 在 Android KitKat 中接收彩信

    所以这个视频Android 4 4 短信 API http www youtube com watch v mdq0R2WQssQ DevBytes 解释了 KitKat 中 SMS API 的最新变化 他们还提供了示例项目的链接 http
  • 使用 JavaScript 时如何保护 API Key?

    因此 我正在开发一个仅供我自己使用的小型应用程序 也可能是 Git 上的一个开源项目 我正在使用来自 Envato Marketplaces 的 API 众所周知 有些操作不需要任何密钥 但同时也有一些操作需要 我首先用 PHP 为 Env
  • 限制传出 PHP+curl 请求的速率

    有没有办法限制 有延迟 向外部服务器发出 PHP curl 请求的速率 以便每秒只有 n 个请求 PHP 在 Fastcgi 模式下使用 因此无法使用睡眠 是的 有curl 多重处理程序 您可以使用 OOP 方式以 OOP 方式完成此操作这
  • C++ API 设计和错误处理

    我需要使用 lib 文件 MSVC 编写 C API 它由 Dll 公开的几个导出的 C 类组成 从我的另一个问题的答案中我了解到 如果 C API 是在一个 VC 版本 假设是 2010 中构建的 并且客户端代码是在另一个 VC 版本中编
  • 从纬度经度查找时区[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库 或者更好的网络服务 可以将纬度 经度转换为时区 对于我正在从事的一个项目 我相当深入地研究
  • RabbitMQ HTTP API 请求 401 未经授权

    我正在尝试访问 RabbitMQ Rest 但收到 401 未经授权的错误 我想访问队列信息并获取消息编号 我发现这是一个解决方案 DefaultHttpClient httpClient new DefaultHttpClient Htt

随机推荐

  • 5.GD32F103C8T6 串口DMA+IDLE方式接收数据

    1 串口的基本初始化 span class token keyword void span span class token function usart base init span span class token punctuatio
  • 26. GD32F103C8T6入门教程-CAN外设回环测试

    1 基础知识 相关stm32CAN外设 外设特征 3个发送邮箱 2个深度为3个邮箱的接收FIFO 自动重传 自动唤醒 发送 接收时间戳 最大速率1Mbps 3种工作模式 睡眠模式 可以检车总线状态自动唤醒 初始化工作模式 如果需要对 CAN
  • stm32 操作W25Q256 W25Q16 spi flash

    硬件连接 本函数库来自正点原子官方 xff0c 本人稍作修改和添加注释 W25Q16 2M Byte W25Q256 32M Byte spi 配置 2022 7 27 经过测试 华邦的 W25Q256JV 32M 字节 容量的spi fl
  • ESP32学习笔记20-dac

    20 DAC 20 1概述 ESP32 有两个 8 位数模转换器 DAC 通道 分别连接到 GPIO25 通道 1 和 GPIO26 通道 2 每个 DAC 通道可以将数字值 0 255 转换成模拟电压 0 Vref out voltage
  • ESP32学习笔记21-esp32启动流程

    24 esp32启动流程 第一 xff0c 第二阶段启动流程 第三阶段的详细流程
  • ESP32学习笔记22-TWAI-CAN

    22 TWAI CAN 22 1概述 22 1 1参考博客 ESP32 基于自带控制器实现CAN总线通信 上 知乎 zhihu com ESP32 基于自带控制器实现CAN总线通信 下 知乎 zhihu com 22 1 2 ESP32 T
  • Python str和bytes的相互转换

    str0 61 39 abc 39 a 61 bytes str0 39 utf 8 39 print type str0 str0 print type a a print 39 39 c 61 bytes 97 98 99 100 pr
  • wxpython 基本的控件 (按钮)

    在wxPython 中有很多不同类型的按钮 这一节 xff0c 我们将讨论文本按钮 位图按钮 开关按钮 xff08 toggle buttons xff09 和通用 xff08 generic xff09 按钮 如何生成一个按钮 xff1f
  • FreeRTOS系列|处理器利用率

    处理器利用率 1 处理器利用率统计的作用 处理器利用率其实就是系统运行的程序占用的CPU资源 xff0c 表示机器在某段时间程序运行的情况 xff0c 如果这段时间中 xff0c 程序一直在占用CPU的使用权 xff0c 那么可以认为CPU
  • QT 多线程使用QTcpSocket

    本人亲测使用moveToThread xff08 xff09 的方式可以 xff1b 不存在报错 xff0c 警告 include 34 widget h 34 include 34 ui widget h 34 Widget Widget
  • ESP8266天猫精灵接入流程

    Blinker天猫精灵接入流程 设备上线 设置接入的设备类型 设置接入设备的auth Key 设置SSID PSWD 或者选择 ESPTOUCH等配网方式 下载代码等待设备接入上线成功 authKey对应的设备若需要更换接入的设备类型 xf
  • 存储器的分类

    目录 01 ROM 02 非易失性RAM 2 1原理 2 2发展 2 3 摩尔定律 03 易失性RAM 3 1原理 3 2发展 3 3总结 04 总结 储器类型有很多 xff0c 常见的有ROM xff08 Read onlymemory只
  • RT - thread学习(一)

    目录 一 RT thread介绍 二 RT thread移植 首先我们先在官网获取 编辑 对无关的文件进行剪裁 剪裁后的内核文件移植到sdk文件 配置内核文件 一 RT thread介绍 rt thread是国产的一款开源的实时操作系统 这
  • 机器学习基本概念

    文章目录 深度学习和机器学习NLP xff08 Natural language processing xff09 Confusion Matrix 混淆矩阵ROC xff08 Receiver Operator Characteristi
  • ROS Kinetic中OpenCV使用

    ROS Kinetic中OpenCV使用 本文主要记录了ROS Kinetic中OpenCV的使用 xff0c Kinetic完全安装中本身自带了Opencv3 3 1 xff0c 因此在ROS中可以直接用ROS自带的Opencv3 3 1
  • ROS下gazebo不能加载willowgarage世界

    在打开gazebo ros打开williowgarage的时候 xff0c 能够找到willowgarage world的文件 xff0c 但是gazebo不能够加载这个模型 xff0c 主要原因是gazebo的model里面并没有mode
  • Mac OS下安装串口调试工具minicom

    最近在做一个Mac下的ssh调试工具 xff0c 但是出现了一点问题 后来发现居然Mac下有串口调试工具可以用 xff0c 所以果断换串口了 xff0c 是普通PL2303芯片的usb转串口线 接下来说下简单的安装步骤吧 我是勤劳的搬砖工
  • Eclipse等IDE配置Anaconda/Python3开发环境(win10_x64)

    分诊台 正所谓 洞庭揽物 xff0c 各有所怀 xff0c 博客点击 xff0c 也是各有所需 为了能让读者节约时间 xff0c 本小百姓 xff0c 写博客时尽力将博客内容各部分内容解耦 xff0c 但仍保持一定的连贯性 xff0c 并参
  • Linux(树莓派)系统中判断WiFi是否连接上路由器的方法

    之前 xff08 https blog csdn net u010299133 article details 105823339 xff09 介绍过在Linux系统中使用wpa supplicant连接到指定的WiFi路由器的方法 xff
  • FreeRTOS系列|任务相关API函数

    任务相关API函数 1 任务相关API函数 FreeRTOS中有很多与任务相关的API函数 xff0c 大多数是辅助函数 下表是这些与任务相关的API函数功能和描述简介 函数名功能描述uxTaskPriorityGet 查询某个任务的优先级