uxTaskPriorityGet():查询某个任务的优先级

vTaskPrioritySet():改变某个任务的任务优先级

uxTaskGetSystemState():获取系统中任务状态

vTaskGetInfo():获取某个任务信息

xTaskGetApplicationTaskTag():获取某个任务的标签(Tag)值

xTaskGetCurrentTaskHandle():获取当前正在运行的任务的任务句柄

xTaskGetHandle():根据任务名字查找某个任务的句柄

xTaskGetIdleTaskHandle():获取空闲任务的任务句柄

uxTaskGetStackHighWaterMark():获取任务的堆栈的历史剩余最小值,FreeRTOS 中叫做“高水位线”

eTaskGetState():获取某个任务的壮态,这个壮态是 eTaskState 类型

pcTaskGetName():获取某个任务的任务名字

xTaskGetTickCount():获取系统时间计数器值

xTaskGetTickCountFromISR():在中断服务函数中获取时间计数器值

xTaskGetSchedulerState():获取任务调度器的壮态,开启或未开启

uxTaskGetNumberOfTasks():获取当前系统中存在的任务数量

vTaskList():以一种表格的形式输出当前系统中所有任务的详细信息

vTaskGetRunTimeStats():获取每个任务的运行时间

vTaskSetApplicationTaskTag():设置任务标签(Tag)值

SetThreadLocalStoragePointer():设置线程本地存储指针

GetThreadLocalStoragePointer():获取线程本地存储指针

使用举例

/*
* UBaseType_t uxTaskGetNumberOfTasks( void )
* UBaseType_t uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray,
* const UBaseType_t uxArraySize, uint32_t * const pulTotalRunTime )
*/ TaskStatus_t *StatusArray;
UBaseType_t task_num; task_num=uxTaskGetNumberOfTasks(); //获取系统任务数量
printf("uxTaskGetNumberOfTasks %d\r\n", task_num); StatusArray=pvPortMalloc(task_num*sizeof(TaskStatus_t));//申请内存
if(StatusArray!=NULL) //内存申请成功
{
ArraySize=uxTaskGetSystemState((TaskStatus_t* )StatusArray, //任务信息存储数组
(UBaseType_t )task_num, //任务信息存储数组大小
(uint32_t* )&TotalRunTime);//保存系统总的运行时间
printf("TaskName\t\tPriority\t\tTaskNumber\t\t\r\n");
for(x=0;x<task_num;x++)
{
printf("%s\t\t%d\t\t\t%d\t\t\t\r\n",
StatusArray[x].pcTaskName, //任务名称
(int)StatusArray[x].uxCurrentPriority, //任务优先级
(int)StatusArray[x].xTaskNumber); //任务编号 }
}
vPortFree(StatusArray); //释放内存

实验现象

uxTaskGetNumberOfTasks 5

TaskName        Priority        TaskNumber
query_task 3 5
led0_task 2 4
IDLE 0 2
start_task 1 1
Tmr Svc 31 3

使用举例

/*
* TaskHandle_t xTaskGetHandle( const char *pcNameToQuery )
* void vTaskGetInfo( TaskHandle_t xTask, TaskStatus_t *pxTaskStatus,
* BaseType_t xGetFreeStackSpace, eTaskState eState )
*/
TaskHandle_t TaskHandle;
TaskStatus_t TaskStatus; TaskHandle=xTaskGetHandle("led0_task"); //根据任务名获取任务句柄 //获取LED0_Task的任务信息
vTaskGetInfo((TaskHandle_t )TaskHandle, //任务句柄
(TaskStatus_t* )&TaskStatus, //任务信息结构体
(BaseType_t )pdTRUE, //允许统计任务堆栈历史最小剩余大小
(eTaskState )eInvalid); //函数自己获取任务运行壮态 printf("任务名: %s\r\n",TaskStatus.pcTaskName);
printf("任务编号: %d\r\n",(int)TaskStatus.xTaskNumber);
printf("任务壮态: %d\r\n",TaskStatus.eCurrentState);
printf("任务当前优先级: %d\r\n",(int)TaskStatus.uxCurrentPriority);
printf("任务基优先级: %d\r\n",(int)TaskStatus.uxBasePriority);
printf("任务堆栈基地址: %#x\r\n",(int)TaskStatus.pxStackBase);
printf("任务堆栈历史剩余最小值: %d\r\n",TaskStatus.usStackHighWaterMark);

实验现象

任务名:                led0_task
任务编号: 4
任务壮态: 2
任务当前优先级: 2
任务基优先级: 2
任务堆栈基地址: 0x200012e8
任务堆栈历史剩余最小值: 108

使用举例

/*
* eTaskState eTaskGetState( TaskHandle_t xTask )
*/ typedef enum
{
eRunning = 0, /* A task is querying the state of itself, so must be running. */
eReady, /* The task being queried is in a read or pending ready list. */
eBlocked, /* The task being queried is in the Blocked state. */
eSuspended, /* The task being queried is in the Suspended state, or is in the Blocked state with an infinite time out. */
eDeleted, /* The task being queried has been deleted, but its TCB has not yet been freed. */
eInvalid /* Used as an 'invalid state' value. */
} eTaskState; TaskHandle=xTaskGetHandle("query_task"); //根据任务名获取任务句柄 TaskState=eTaskGetState(TaskHandle); //获取query_task任务的任务壮态 switch((int)TaskState)
{
case eRunning:
sprintf(TaskInfo,"Running");
break;
case eReady:
sprintf(TaskInfo,"Ready");
break;
case eSuspended:
sprintf(TaskInfo,"Suspended");
break;
case eDeleted:
sprintf(TaskInfo,"Deleted");
break;
case eInvalid:
sprintf(TaskInfo,"Invalid");
break;
}
printf("任务壮态值:%d,对应的壮态为:%s\r\n",TaskState,TaskInfo);

实验现象

任务壮态值:0,对应的壮态为:Running

使用举例

/*
* void vTaskList( char * pcWriteBuffer )
*/ vTaskList(InfoBuffer); //获取所有任务的信息
printf("%s\r\n",InfoBuffer);

实验现象

query_task      R   3   192 5
IDLE R 0 108 2
led0_task B 2 108 4
Tmr Svc S 31 236 3

FreeRTOS任务状态信息查询的更多相关文章

  1. Mysql状态信息查询

    目录 一.连接相关 二.show status 三.其它 一.连接相关 查看连接线程相关的系统变量的设置值 show variables like 'thread%'; 查看系统被连接的次数 show ...

  2. ceph状态信息靠谱查询

    1)检查集群的状态汇总信息: [root@haha1 clouder]# ceph -s cluster 8e136e25-77ab-4e0b-b24b-232a7b466cfe health HEA ...

  3. 使用Jquery.load()方法,出现-此页的状态信息无效,可能已损坏。[转]

    今天遇到此页的状态信息无效,可能已损坏,在以下页面找到解决办法,特记录下来: 转自:http://www.cnblogs.com/liuwenlong/archive/2011/05/09/20410 ...

  4. 数据文件、日志文件、归档文件、控制文件、参数文件及RMAN备份数据库信息查询

    一.查看数据库信息:=====================1.数据文件 SQL> SELECT FILE#,STATUS,ENABLED,NAME FROM V$DATAFILE; FILE ...

  5. MySQL优化:使用show status查看MySQL服务器状态信息

    在网站开发过程中,有些时候我们需要了解MySQL的服务器状态信息,譬如当前MySQL启动后的运行时间,当前MySQL的客户端会话连接数,当前MySQL服务器执行的慢查询数,当前MySQL执行了多少SE ...

  6. Oracle sqlplus失去响应解决方法/如何在数据库失去响应时转储状态信息(转)

    某云平台出现故障,sqlplus连接Oracle数据库,发现没有响应.数据库版本:12.1.0.2.0 查找.借鉴前人经验,成功处理此问题,参考网址:如何在数据库失去响应时转储状态信息 - Oracl ...

  7. 使用 SHOW STATUS 查看mysql 服务器状态信息

    在LAMP架构的网站开发过程中,有些时候我们需要了解MySQL的服务器状态信息,譬如当前MySQL启动后的运行时间,当前MySQL的客户端会话连接数,当前MySQL服务器执行的慢查询数,当前MySQL ...

  8. 【MySQL优化】使用show status查看MySQL服务器状态信息

    在网站开发过程中,有些时候我们需要了解MySQL的服务器状态信息,譬如当前MySQL启动后的运行时间,当前MySQL的客户端会话连接数,当前MySQL服务器执行的慢查询数,当前MySQL执行了多少SE ...

  9. 老男孩Day4作业:员工信息查询系统

    1.作业需求: (1).工信息表程序,实现增删改查操作: (2).可进行模糊查询,语法至少支持下面3种:          select name,age from staff_table where ...

随机推荐

  1. MySQL Group By 实例讲解(二)

    mysql group by使用方法实例讲解 MySQL中GROUP BY语句用于对某个或某些字段查询分组,并返回这个字段重复记录的第一条,也就是每个小组(无排序)里面的第一条. 本文章通过实例向大家 ...

  2. Spring Boot-IntelliJ IDEA搭建SpringBoot

    点击create new project 点击next 这里基本都已经自动生成了,简单介绍下: Name:项目名称 Type:我们是Maven构建的,那么选择第一个Maven Project Pack ...

  3. C#发起Http请求,调用接口

    //方法1. Post 异步请求,普通的异步请求,传输普通的字符串等,对于有html代码的字段值的传输支持不好,如果需要传输html,二进制等数据的传输,请使用下面第二个方法,即使用UploadDat ...

  4. IISExpress.无法启动IIS Express Web 服务器.Starting IIS Express... IIS Express is running

    x 提示: 无法启动IIS Express Web 服务器. 来自IIS Express的输出: Starting IIS Express... IIS Express is running 总结: ...

  5. 主机可以ping通虚拟机,虚拟机ping不通主机和外网

    vmware-->编辑-->虚拟网络编辑器-->更改配置,如下图选择:

  6. 第07组 Beta冲刺(4/4)

    队名:秃头小队 组长博客 作业博客 组长徐俊杰 过去两天完成的任务:学习了很多东西 Github签入记录 接下来的计划:继续学习 还剩下哪些任务:后端部分 燃尽图 遇到的困难:自己太菜了 收获和疑问: ...

  7. Vue利用搜狐获取公网ip地址

    在index.html中添加代码: <script src="https://pv.sohu.com/cityjson?ie=utf-8"></script> ...

  8. QT QML与C++混搭

    "那些杀不死我的必使我更加强大"----尼采 QML与C++混合编程就是使用QML高效便捷地构建UI,而C++则用来实现业务逻辑和复杂算法. ML访问C++Qt集成了QML引擎和Q ...

  9. python基础 — random库

    python中用于生成伪随机数的函数库是random 因为是标准库,使用时候只需要import random random库包含两类函数,常用的共8个 --基本随机函数: seed(), random ...

  10. 继承 多态 封装 Python面向对象的三大特性

    1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情况具体分析.  那这个也可以被称为封装. 2. 继承: 两个 ...