任务相关的API函数-uxTaskGetSystemState

uxTaskGetSystemState:此函数用于获取系统中所有的任务状态,每个任务的状态信息保存在一个TaskStatus_t类型的结构体里面.要使用此函数必须把 configUSE_TRACE_FACILITY 打开,在FreeRtos.h文件的744行(V9.0)

返回值:统计到任务状态的个数,也就是填写到数组pxTaskStatusArray中的个数,此值应该等于函数uxTaskGetNumberOfTask()的返回值,如果uxArraySize太小的话返回值可能为0

UBaseType_t uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray, 

const UBaseType_t uxArraySize, 

uint32_t * const pulTotalRunTime )


typedef struct xTASK_STATUS
{
TaskHandle_t xHandle;//任务句柄
const char *pcTaskName;//任务名字
UBaseType_t xTaskNumber;//任务编号  typedef unsigned long UBaseType_t;
eTaskState eCurrentState;//当前任务状态,eTaskState是一个枚举类型
UBaseType_t uxCurrentPriority;//任务当前的优先级
UBaseType_t uxBasePriority;//任务基础优先级
uint32_t ulRunTimeCounter;//任务运行的总时间
StackType_t *pxStackBase;//堆栈基地址
uint16_t usStackHighWaterMark;//从任务创建以来任务堆栈剩余的最小大小,此值如果太小的话说//明堆栈有溢出的风险
} TaskStatus_t;



u32 TotalRunTime;
UBaseType_t ArraySize,x;
TaskStatus_t *StatusArray;
//第一步:函数uxTaskGetSystemState()的使用
printf("/*********第一步:函数函数uxTaskGetSystemState()的使用*****/\r\n");
ArraySize=uxTaskGetNumberOfTasks();//获取系统任务数量
StatusArray=pvPortMalloc(ArraySize*sizeof(TaskStatus_t));//申请内存
if(StatusArray!=NULL) //内存申请成功
{
ArraySize=uxTaskGetSystemState((TaskStatus_t* )StatusArray,
(UBaseType_t)ArraySize,
(uint32_t*)&TotalRunTime);
printf("TaskName\t\tPriority\t\tTaskNumber\t\t\r\n");
for(x=0;x<ArraySize;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);  //释放内存



  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值