FreeRTOS任务状态信息查询
2018-01-16 12:05
429 查看
uxTaskPriorityGet():查询某个任务的优先级
vTaskPrioritySet():改变某个任务的任务优先级
uxTaskGetSystemState():获取系统中任务状态
vTaskGetInfo():获取某个任务信息
xTaskGetApplicationTaskTag():获取某个任务的标签(Tag)值
xTaskGetCurrentTaskHandle():获取当前正在运行的任务的任务句柄
xTaskGetHandle():根据任务名字查找某个任务的句柄
xTaskGetIdleTaskHandle():获取空闲任务的任务句柄
uxTaskGetStackHighWaterMark():获取任务的堆栈的历史剩余最小值,FreeRTOS 中叫做“高水位线”
eTaskGetState():获取某个任务的壮态,这个壮态是 eTaskState 类型
pcTaskGetName():获取某个任务的任务名字
xTaskGetTickCount():获取系统时间计数器值
xTaskGetTickCountFromISR():在中断服务函数中获取时间计数器值
xTaskGetSchedulerState():获取任务调度器的壮态,开启或未开启
uxTaskGetNumberOfTasks():获取当前系统中存在的任务数量
vTaskList():以一种表格的形式输出当前系统中所有任务的详细信息
vTaskGetRunTimeStats():获取每个任务的运行时间
vTaskSetApplicationTaskTag():设置任务标签(Tag)值
SetThreadLocalStoragePointer():设置线程本地存储指针
GetThreadLocalStoragePointer():获取线程本地存储指针
使用举例
实验现象
使用举例
实验现象
使用举例
实验现象
使用举例
实验现象
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任务相关API函数---查询/改变某个任务的优先级+获取全部/某个任务状态信息
- INFORMATICA 的元数据管理之二:运行状态信息查询
- 通过数据库读取,获取MVM各扫描任务的漏扫数量趋势统计以及详细信息查询
- Informatica中如何在资料库中查询计划中状态的任务
- (七)Activiti之历史活动查询和历史任务查询和流程状态查询
- 查询用户注册状态 在线用户信息
- FreeRTOS的任务状态
- lpq命令_Linux lpq 命令用法详解:显示打印队列中的打印任务的状态信息
- 这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询。这些是所有 Oracle 开发者都必备的技能,所以快快收藏吧!
- Java Activiti(4)--查询历史任务数据等信息
- Android实现快递单号查询快递状态信息
- Android快递单号查询快递状态信息
- 分页查询信息(使用jdbc连接mysql数据库实现分页查询任务)
- FreeRTOS任务运行时间信息统计
- v9用于静态页查询登陆状态以及用户信息的ajax接口
- 调试信息输出、获取任务句柄、获取任务状态、操作任务标签值
- windows系统信息,内存状态,区域信息的查询
- 获取系统信息 、内存状态, 查询内存分配
- 最佳实践 延迟队列干掉定时任务. 特别是跨表查询状态的定时任务
- 查询系统和进程状态信息