• 任务相关的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()的使用*****/ ");
    ArraySize=uxTaskGetNumberOfTasks();//获取系统任务数量
    StatusArray=pvPortMalloc(ArraySize*sizeof(TaskStatus_t));//申请内存
    if(StatusArray!=NULL) //内存申请成功
    {
    ArraySize=uxTaskGetSystemState((TaskStatus_t* )StatusArray,
    (UBaseType_t)ArraySize,
    (uint32_t*)&TotalRunTime);
    printf("TaskName Priority TaskNumber ");
    for(x=0;x<ArraySize;x++)
    {
    //通过串口打印出获取到的系统的有关信息 比如任务名称,
    //任务优先级和任务编号
    printf("%s %d %d ",
    StatusArray[x].pcTaskName,
    (int)StatusArray[x].uxCurrentPriority,
    (int)StatusArray[x].xTaskNumber);
    }

    }
    vPortFree(StatusArray);  //释放内存

     

  • 相关阅读:
    架构的上层是系统,是系统要素的组织形式
    计数与方法论、哲学
    网络编程--会话层、表示层、应用层
    面向中间件编程--草稿
    泛型:基于类型组合的算法和结构构建---数据结构与算法
    面向对象:消息机制更适合描述;
    类型的连接:实连接、虚连接
    数据库 = filesystem + transcation + dsl + dslengine
    一文看透浏览器架构
    代码的结合性:继承 扩展 组合 变换--swift暗含的四根主线
  • 原文地址:https://www.cnblogs.com/-colin/p/9228620.html
Copyright © 2020-2023  润新知