FreeRTOS任务状态信息查询
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 5TaskName 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任务状态信息查询相关推荐
- FreeRTOS任务相关API函数---查询/改变某个任务的优先级+获取全部/某个任务状态信息
本文是<ALIENTEK STM32F429 FreeRTOS 开发教程>第十一章学习笔记 第一章笔记–FreeRTOS简介与源码下载 第二章笔记–FreeRTOS在STM32F4上移植 ...
- 物流看板、大数据驾驶舱、物流监控、运输跟踪、车辆运输管控、车辆管理、运单统计、商品流通数据库、配送费、发货件数、行驶耗油、违规管理、告警信息、车队统计、车辆信息查询、运输状态、运输数量、运输进度
物流看板.大数据驾驶舱.物流监控.运输跟踪.车辆运输管控.车辆管理.运单统计.商品流通数据库.配送费.发货件数.行驶耗油.违规管理.告警信息.车队统计.车辆信息查询.运输状态.运输数量.运输进度 Ax ...
- Android快递单号查询快递状态信息
辛苦堆砌,转载请注明出处,谢谢! 今天介绍一个自己做的快递单号查询的简单APP,供大家参考.由于需要使用http和json,本文在build.gradle(module:app)添加了okhttp3依 ...
- HTTP状态查询,HTTP状态码含义,HTTP头部信息查询,http状态码表
HTTP状态查询,HTTP状态码含义,HTTP头部信息查询,http状态码表 状态码表 状态码 状态码英文名称 中文描述 100 Continue 继续.客户端应继续其请求 101 Switching ...
- 学会处理ASP.NET的页面和请求状态信息 (转载)
作者: BUILDER.COM 2003-04-23 02:41 PM 任何动态Web应用程序都必须能够管理状态信息--ASP.NET的应用程序也不例外.在本文里,我会讨论处理两种类型状态信息的方法: ...
- EOS 账号创建和信息查询
2019独角兽企业重金招聘Python工程师标准>>> 一个账户可视为在线的访问凭证.nodeos管理着在区块链上发布账户以及与账户相关联的行为.我们通过cleos与nodeos的交 ...
- [SOSP 17] Wukong+S : 不断演化的RDF数据的亚毫秒级别的状态流查询
今天要讲的文章是SOSP 2017年的一篇文章,Wukong+S :Sub-millisecond Stateful Stream Querying over Fast-evolving Linked ...
- mysql服务器查绑定的域名查_MySQL使用show status查看MySQL服务器状态信息
MySQL使用show status查看MySQL服务器状态信息 这篇文章主要介绍了MySQL使用show status查看MySQL服务器状态信息,需要的朋友可以参考下 在LAMP架构的网站开发过程 ...
- 小程序 模糊查询_[轻应用小程序]如何使用信息查询功能?
本文内容结构如下图 一.查询功能是什么?有什么作用? 对于企业,会有一些和自身业务相关的数据,需要给到客户提供"查询信息"或"查询缴费"服务. 查询信息: 学校 ...
最新文章
- log4j.properties
- Linux Kernel中的同步机制的介绍
- VC6开发视频监控ActiveX控件总结
- 初进JAVA职场面试小技巧:一个老学长的吐血之作!
- 论文浅尝 | 基于复杂查询图编码的知识库问答
- Nginx Parsing HTTP Package、header/post/files/args Sourcecode Analysis
- 卫健委:不存在因流感引起大量坏死性脑病的现象
- HTML5期末大作业:小说网页设计——在线阅读7页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计
- 一张图带你复习《数字信号处理》、《数字电路》、《电磁场理论》
- 人生感悟经典哲理句子,句句都是人生哲理!
- 【论文阅读】【综述】A survey of deep learning techniques for autonomous driving
- 树莓派 Retropie 4.4中文版使用说明 含roms资源
- 各品牌主板、笔记本、台式机启动快捷键
- 公园遛狗 / 小白逛公园【线段树】
- 语法分析器---预测分析程序
- 第一定律VR助力马克思主义学院完成高校思政课改
- 基于Python实现的孤立词语音识别系统
- three.js-EffectComposer辉光使用展示
- 罗振宇2023“时间的朋友”跨年演讲原版PPT(附下载)
- [kpw] Kindle Paperwhite 升级到 5.6.5 后,kterm无法启动