当前位置: 首页 > news >正文

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()查询任务从调度到现在运行的时间

相关文章:

  • 数据库原理5
  • JavaScript系列06-深入理解 JavaScript 事件系统:从原生事件到 React 合成事件
  • Greenplum6.19集群搭建
  • 【云岚到家】-实战问题(上)
  • ubuntu 20.04 C++ 源码编译 cuda版本 opencv4.5.0
  • STM32驱动OLED屏幕全解析:从原理到温度显示实战(上) | 零基础入门STM32第五十三步
  • 人工智能与深度学习的应用案例解析及代码实现
  • Ae 效果详解:VR 色差
  • 计算机视觉cv2入门之图像的读取,显示,与保存
  • 【江协科技STM32】ADC数模转换器-学习笔记
  • vue3 vite项目安装eslint
  • MATLAB程序代编液压系统电机非线性滑膜伺服模糊控制simulink仿真
  • 队列知识点最详细整理+总结(基于《王道数据结构考研复习指导》)
  • 数据库基础以及基本建库建表的简单操作
  • 2025.2.4 更新 AI绘画秋葉aaaki整合包 Stable Diffusion整合包v4.10 +ComfyUI 整合包下载地址
  • Python 编写第一个网络爬虫教程
  • 短记:Flutter 项目常见问题 Gradle version is incompatible with the Java version
  • 深入解析:Linux中KVM虚拟化技术
  • Docker 学习(四)——Dockerfile 创建镜像 (详细版)
  • java每日精进 3.08 OAUTH 2.0