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任务状态信息查询相关推荐

  1. FreeRTOS任务相关API函数---查询/改变某个任务的优先级+获取全部/某个任务状态信息

    本文是<ALIENTEK STM32F429 FreeRTOS 开发教程>第十一章学习笔记 第一章笔记–FreeRTOS简介与源码下载 第二章笔记–FreeRTOS在STM32F4上移植 ...

  2. 物流看板、大数据驾驶舱、物流监控、运输跟踪、车辆运输管控、车辆管理、运单统计、商品流通数据库、配送费、发货件数、行驶耗油、违规管理、告警信息、车队统计、车辆信息查询、运输状态、运输数量、运输进度

    物流看板.大数据驾驶舱.物流监控.运输跟踪.车辆运输管控.车辆管理.运单统计.商品流通数据库.配送费.发货件数.行驶耗油.违规管理.告警信息.车队统计.车辆信息查询.运输状态.运输数量.运输进度 Ax ...

  3. Android快递单号查询快递状态信息

    辛苦堆砌,转载请注明出处,谢谢! 今天介绍一个自己做的快递单号查询的简单APP,供大家参考.由于需要使用http和json,本文在build.gradle(module:app)添加了okhttp3依 ...

  4. HTTP状态查询,HTTP状态码含义,HTTP头部信息查询,http状态码表

    HTTP状态查询,HTTP状态码含义,HTTP头部信息查询,http状态码表 状态码表 状态码 状态码英文名称 中文描述 100 Continue 继续.客户端应继续其请求 101 Switching ...

  5. 学会处理ASP.NET的页面和请求状态信息 (转载)

    作者: BUILDER.COM 2003-04-23 02:41 PM 任何动态Web应用程序都必须能够管理状态信息--ASP.NET的应用程序也不例外.在本文里,我会讨论处理两种类型状态信息的方法: ...

  6. EOS 账号创建和信息查询

    2019独角兽企业重金招聘Python工程师标准>>> 一个账户可视为在线的访问凭证.nodeos管理着在区块链上发布账户以及与账户相关联的行为.我们通过cleos与nodeos的交 ...

  7. [SOSP 17] Wukong+S : 不断演化的RDF数据的亚毫秒级别的状态流查询

    今天要讲的文章是SOSP 2017年的一篇文章,Wukong+S :Sub-millisecond Stateful Stream Querying over Fast-evolving Linked ...

  8. mysql服务器查绑定的域名查_MySQL使用show status查看MySQL服务器状态信息

    MySQL使用show status查看MySQL服务器状态信息 这篇文章主要介绍了MySQL使用show status查看MySQL服务器状态信息,需要的朋友可以参考下 在LAMP架构的网站开发过程 ...

  9. 小程序 模糊查询_[轻应用小程序]如何使用信息查询功能?

    本文内容结构如下图 一.查询功能是什么?有什么作用? 对于企业,会有一些和自身业务相关的数据,需要给到客户提供"查询信息"或"查询缴费"服务. 查询信息: 学校 ...

最新文章

  1. log4j.properties
  2. Linux Kernel中的同步机制的介绍
  3. VC6开发视频监控ActiveX控件总结
  4. 初进JAVA职场面试小技巧:一个老学长的吐血之作!
  5. 论文浅尝 | 基于复杂查询图编码的知识库问答
  6. Nginx Parsing HTTP Package、header/post/files/args Sourcecode Analysis
  7. 卫健委:不存在因流感引起大量坏死性脑病的现象
  8. HTML5期末大作业:小说网页设计——在线阅读7页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计
  9. 一张图带你复习《数字信号处理》、《数字电路》、《电磁场理论》
  10. 人生感悟经典哲理句子,句句都是人生哲理!
  11. 【论文阅读】【综述】A survey of deep learning techniques for autonomous driving
  12. 树莓派 Retropie 4.4中文版使用说明 含roms资源
  13. 各品牌主板、笔记本、台式机启动快捷键
  14. 公园遛狗 / 小白逛公园【线段树】
  15. 语法分析器---预测分析程序
  16. 第一定律VR助力马克思主义学院完成高校思政课改
  17. 基于Python实现的孤立词语音识别系统
  18. three.js-EffectComposer辉光使用展示
  19. 罗振宇2023“时间的朋友”跨年演讲原版PPT(附下载)
  20. [kpw] Kindle Paperwhite 升级到 5.6.5 后,kterm无法启动

热门文章

  1. Linux系统的学习小结
  2. 有时,接受生活的起伏,你会发现一…
  3. 一文详解sass新特性——模块
  4. GD32读取GT30L32S4W字模芯片输出数据出错的总结
  5. 世界顶级五大女程序媛,不仅技术强还都是美女
  6. 网络设备维保状态查询
  7. Canvas绘图之旅
  8. 关于Win10扩展C盘,导致主分区丢失的记录
  9. 2023中科院沈阳计算所初试401分经验贴
  10. mysql 屏蔽关键字_网站页面因敏感关键词遭屏蔽解决方法