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

  • 相关阅读:
    VC 6.0 编译器的使用帮助
    生成可执行jar文件(转)
    DataGridView填充、更新、删除(多行)Sql Express 2005数据库
    访问域服务器修改密码,报“未知的身份验证机制”的错误搞定!
    尝试用Word2007发布博客
    iBatisNet Tutorial
    Asp.net 技巧集合
    TableAdapter 无法插入或更新Access数据库
    OrcasBeta1 installed 玩一玩Silverlight
    Microsoft .NET Compact Framework 开发常见问题解答从msdn上找到。
  • 原文地址:https://www.cnblogs.com/luckytimor/p/14642202.html
Copyright © 2011-2022 走看看