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 即可实现任务占用率查看

  • 相关阅读:
    MySql模糊查询like通配符使用详细介绍
    使用powershell批量添加Qt的文件(生成pro)
    宏定义的教训
    使用powershell批量添加Keil和IAR的头文件路径
    python和数据科学(Anaconda)
    CDCE913产生任意频率
    QT中检索设定目录下所有指定文件的方法
    QT中将ASCII转换为对应数值的方法
    STM8如何使用自带的bootloader
    QT中使用函数指针
  • 原文地址:https://www.cnblogs.com/luckytimor/p/14642202.html
Copyright © 2011-2022 走看看