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

一、任务相关 API 函数预览


二、任务相关 API 函数详解

1. 函数 uxTaskPriorityGet()

此函数用于获取指定任务的任务优先级,若使用此函数,需在 FreeRTOSConfig.h 文件中设

置配置项 INCLUDE_uxTaskPriorityGet 为 1,此函数的函数原型如下所示:

c 复制代码
UBaseType_t uxTaskPriorityGet(const TaskHandle_t xTask);

2. 函数 vTaskPrioritySet()

此函数用于设置指定任务的优先级,若使用此函数,需在 FreeRTOSConfig.h 文件中设置配

置项 INCLUDE_vTaskPrioritySet 为 1,此函数的函数原型如下所示:

c 复制代码
void vTaskPrioritySet(
 TaskHandle_t xTask,
 UBaseType_t uxNewPriority);

3. 函数 uxTaskGetSystemState()

此函数用于获取指定任务的状态信息,若使用此函数,需在 FreeRTOSConfig.h 文件中设置

配置项 configUSE_TRACE_FACILITY 为 1,此函数的函数原型如下所示:

c 复制代码
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 的定义如下所示:

c 复制代码
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,此函数的函数原型如下所示:

c 复制代码
void vTaskGetInfo(
 TaskHandle_t xTask,
 TaskStatus_t * pxTaskStatus,
 BaseType_t xGetFreeStackSpace,
 eTaskState eState);

函数 vTaskGetInfo()的形参描述,如下表所示:

函数 vTaskGetInfo()的形参 eState 用来表示任务的状态,其变量类型为 eTaskState,变量类

型 eTaskState 的定义如下所示:

c 复制代码
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,此函数的函数原型如下所示:

c 复制代码
TaskHookFunction_t xTaskGetApplicationTaskTag(TaskHandle_t xTask);

6. 函数 xTaskGetCurrentHandle()

此函数用于获取当前 系统正在运行的 任务的任务句柄, 若使用此函数,需 在

FreeRTOSConfig.h 文件中设置配置项 INCLUDE_xTaskGetCurrentTaskHandle 为 1,此函数的函

数原型如下所示:

c 复制代码
TaskHandle_t xTaskGetCurrentTaskHandle(void);

函数 xTaskGetCurrentTaskHandle()无形参。

函数 xTaskGetCurrentTaskHandle()的返回值,如下表所示:

7. 函数 xTaskGetHandle()

此函数用于通过任务名获取任务句柄,若使用此函数,需在 FreeRTOSConfig.h 文件中设置

配置项 INCLUDE_xTaskGetHandle 为 1,此函数的函数原型如下所示:

c 复制代码
TaskHandle_t xTaskGetHandle(const char * pcNameToQuery);

8. 函数 xTaskGetIdleTaskHandle()

此函数用于获取空闲任务的任务句柄,若使用此函数,需在 FreeRTOSConfig.h 文件中设置

配置项 INCLUDE_xTaskGetIdleTaskHandle 为 1,此函数的函数原型如下所示:

c 复制代码
TaskHandle_t xTaskGetIdleTaskHandle(void);

函数 xTaskGetIdleTaskHandle()无形参。

函数 xTaskGetIdleTaskHandle()的返回值,如下表所示:

9. 函数 uxTaskGetStackHighWaterMark()

此函数用于获取指定任务 的 任务栈的历史剩余最小值, 若 使用此函数 , 需 在

FreeRTOSConfig.h 文件中设置配置项 INCLUDE_uxTaskGetStackHighWaterMark 为 1,此函数的

函数原型如下所示:

c 复制代码
UBaseType_t uxTaskGetStackHighWaterMark(TaskHandle_t xTask);

10. 函数 eTaskGetState()

此函数用于获取指定任务的状态,若使用此函数,需在 FreeRTOSConfig.h 文件中设置配置

项 INCLUDE_eTaskGetState 为 1,此函数的函数原型如下所示:

c 复制代码
eTaskState eTaskGetState(TaskHandle_t xTask);

函数 eTaskGetState()的返回值,如下表所示:

11. 函数 pcTaskGetName()

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

c 复制代码
char * pcTaskGetName(TaskHandle_t xTaskToQuery);

函数 pcTaskGetName()的形参描述,如下表所示:

12. 函数 xTaskGetTickCount()

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

c 复制代码
volatile TickType_t xTaskGetTickCount(void);

函数 xTaskGetTickCount()无形参。

函数 xTaskGetTickCount()的返回值,如下表所示

13. 函数 xTaskGetTickCountFromISR()

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

c 复制代码
volatile TickType_t xTaskGetTickCountFromISR(void);

函数 xTaskGetTickCountFromISR()无形参。

函数 xTaskGetTickCountFromISR()的返回值,如下表所示:

14. 函数 xTaskGetSchedulerState()

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

c 复制代码
BaseType_t xTaskGetSchedulerState(void);

函数 xTaskGetSchedulerState()无形参。

函数 xTaskGetSchedulerState()的返回值,如下表所示:

15. 函数 uxTaskGetNumberOfTasks()

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

c 复制代码
UBaseType_t uxTaskGetNumberOfTasks(void);

函数 uxTaskGetNumberOfTasks()无形参。

函数 uxTaskGetNumberOfTasks()的返回值,如下表所示:

16. 函数 vTaskList()

此函数用于以"表格"的形式获取系统中任务的信息,若使用此函数,需在 FreeRTOSConfig.h

文 件 中 同 时 设 置 配 置 项 configUSE_TRACE_FACILITY 和配置项

configUSE_STATS_FORMATTING_FUNCTIONS 为 1,此函数的函数原型如下所示:

c 复制代码
void vTaskList(char * pcWriteBuffer);

函数 vTaskList()的形参描述,如下表所示:

17. 函数 vTaskGetRunTimeStats()

此函数用于获取指定任务的运行时间、运行状态等信息,若使用此函数,需在

FreeRTOSConfig.h 文 件 中 同 时 设 置 配 置 项 configGENERATE_RUN_TIME_STAT 、

configUSE_STATS_FORMATTING_FUNCTIONS、configSUPPORT_DYNAMIC_ALLOCATION

为 1,此函数的函数原型如下所示:

c 复制代码
void vTaskGetRunTimeStats(char * pcWriteBuffer);

函数 vTaskGetRunTimeState()的形参描述,如下表所示:

18. 函数 vTaskSetApplicationTaskTag()

此函数用于设置指定任务的 Tag,若使用此函数,需在 FreeRTOSConfig.h 文件中设置配置

项 configUSE_APPLICATION_TASK_TAG 为 1,此函数的函数原型如下所示:

c 复制代码
void vTaskSetApplicationTaskTag(
 TaskHandle_t xTask,
 TaskHookFunction_t pxTagValue);

函数 vTaskSetApplicationTaskTag()的形参描述,如下表所示:

19. 函数 SetThreadLocalStoragePointer()

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

c 复制代码
void vTaskSetThreadLocalStoragePointer(
 TaskHandle_t xTaskToSet,
 BaseType_t xIndex,
 void * pvValue)

函数 SetThreadLocalStoragePointer()的形参描述,如下表所示:

20. 函数 GetThreadLocalStoragePointer()

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

c 复制代码
void *pvTaskGetThreadLocalStoragePointer(
 TaskHandle_t xTaskToQuery,
 BaseType_t xIndex);

函数 GetThreadLocalStoragePointer()的形参描述,如下表所示:

三、相关实验


相关推荐
苏打水com10 分钟前
第九篇:Day25-27 Vue进阶——组件复用与状态管理(对标职场“复杂项目”需求)
前端·javascript·vue.js
马克学长12 分钟前
SSM桐梓娄山书店管理系统6k3s6(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·用户管理·ssm框架·书店管理系统
毕设源码-赖学姐14 分钟前
【开题答辩全过程】以 高校评教评学系统的设计与实现为例,包含答辩的问题和答案
java·eclipse
老华带你飞17 分钟前
博物馆展览门户|基于Java博物馆展览门户系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot·后端
PineappleCoder22 分钟前
别让页面 “鬼畜跳”!Google 钦点的 3 个性能指标,治好了我 80% 的用户投诉
前端·性能优化
路边草随风28 分钟前
iceberg 基于 cosn 构建 catalog
java·大数据
It's now31 分钟前
Spring Framework 7.0 原生弹性功能系统讲解
java·后端·spring
点PY32 分钟前
C++ 中 std::async 和 std::future 的并发性
java·开发语言·c++
卤代烃36 分钟前
🕹️ [AI] Chrome DevTools MCP 原理分析
前端·mcp
梦里不知身是客111 小时前
flink对于迟到数据的处理
前端·javascript·flink