FreeRTOS查看任务CPU占用率及剩余内存 HAL库STM32
前言:使用STM32CubeMX配置FreeRTOS工程,借助其封装函数查看系统运行时任务CPU占用率及剩余内存。
一、STM32CubeMX配置
开启定时器中断
将Run time and task stats gathering related defintions中的GENRATE_RUN_TIME_STATS、USE_TRACE_FACILITY和USE_STATS_FORMATTING_FUNCTIONS启用
二、函数填充
volatile long long FreeRTOSRunTimeTicks;
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 == TIM7)
{
FreeRTOSRunTimeTicks++;
}
/* USER CODE END Callback 1 */
}
extern volatile long long FreeRTOSRunTimeTicks;
__weak void configureTimerForRunTimeStats(void)
{
FreeRTOSRunTimeTicks = 0;
}
__weak unsigned long getRunTimeCounterValue(void)
{
return FreeRTOSRunTimeTicks;
}
signed char pcWriteBuffer[400];
void StartDefaultTask(void const *argument)
{
/* USER CODE BEGIN StartDefaultTask */
/* Infinite loop */
for (;;)
{
memset(pcWriteBuffer, 0, 400);
vTaskList(pcWriteBuffer); //获取内存信息
// vTaskGetRunTimeStats(pcWriteBuffer); //获取CPU占用率信息
printf("\r\n");
printf("%s\n\r", pcWriteBuffer);
osDelay(1000);
}
/* USER CODE END StartDefaultTask */
}
三、效果展示

作者:Handsome_row