zoukankan      html  css  js  c++  java
  • FreeRTOS学习

    一、建立三个任务

      按键,LED,串口

      

    二、任务堆栈信息打印

      

    uint8_t u8TaskListBuff[400];
    /**
    *@FUN:任务信息
    *@PRO:栈名、栈状态、优先级、栈的剩余空间、任务序号
    *@BAK:LQW 
    */int8_t Log_TaskStaMsg(void)
    {//
        memset(u8TaskListBuff, 0, 400);
        vTaskList((char*)u8TaskListBuff);
        printf("任务堆栈大小
    ");
        printf("Name           State  Priority Stack  Num
    ");
        printf("******************************************************
    ");
        printf("%s",u8TaskListBuff);
        printf("******************************************************
    ");
        return 0;
    }

    三、任务系统占用率打印

      

    uint8_t u8TaskListBuff[400];
    uint32_t gu32TimeCount = 0;//添加一个到50-200us的定时器里面循环加加
    /***************************任务运行时间函数***************************/
    //#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS configureTimerForRunTimeStats
    void configureTimerForRunTimeStats(void){
      HAL_TIM_Base_Start_IT(&htim2);    //开启TIM6中断并启动定时器
      gu32TimeCount = 0ul;        //定时器统计值初始化为0
    }
    //#define portGET_RUN_TIME_COUNTER_VALUE getRunTimeCounterValue 
    unsigned long getRunTimeCounterValue(void){
      return gu32TimeCount;
    } 
    /**
    *@FUN:
    *@PRO:
    *@BAK:LQW    
    */int8_t Log_TaskPesMsg(void)
    {//
        memset(u8TaskListBuff, 0, 400);
        vTaskGetRunTimeStats((char*)u8TaskListBuff);
        printf("处理器利用率统计
    ");
        printf("Name      Abs Time    Time
    ");
        printf("******************************************************
    ");
        printf("%s",u8TaskListBuff);
        printf("******************************************************
    ");
        return 0;
    }
    
    
    //*********main.c  50us定时器处调用的
    void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
    {
      /* USER CODE BEGIN Callback 0 */
    
      /* USER CODE END Callback 0 */
      if (htim->Instance == TIM1) {
        HAL_IncTick();
      }
      /* USER CODE BEGIN Callback 1 */
      if(htim->Instance == TIM2){
        gu32TimeCount++;
      }
      /* USER CODE END Callback 1 */
    }

    循环1秒调用 Log_TaskPesMsg 即可实现任务占用率查看

  • 相关阅读:
    学习vim命令:“:w !sudo tee %”
    mac下安装和卸载软件
    很好用的在线markdown编辑器
    doc2vec 利用gensim 生成文档向量
    C语言经典算法100例-024-求数列的前20 项和,2/1,3/2,5/3,8/5...
    C语言经典算法100例-023-打印菱形
    C语言经典算法100例-022-乒乓球比赛名单问题
    C语言经典算法100例-021-猴子吃桃问题
    C语言经典算法100例-020-小球自由下落问题
    C语言经典算法100例-019-求完数
  • 原文地址:https://www.cnblogs.com/luckytimor/p/14642202.html
Copyright © 2011-2022 走看看