cancel
Showing results for 
Search instead for 
Did you mean: 

FreeRTOS Debug windows not displaying proper data

HPate.10
Associate III

I have followed the FreeRTOS API document below I have mentioned the details about the documents.

FreeRTOS on STM32 CMSIS_OS API

T.O.M.A.S – Technically-Oriented Microcontroller Application Services

Version: v1.7

Link for document: https://raw.githubusercontent.com/eziya/STM32F4_HAL_FREERTOS_LAB/master/FreeRTOS_v1.7%20-%20CMSIS%20OS%20API.pdf

Currently, In my application two tasks running simultaneously.

For specific task CPU usage I have followed the page No.251 steps in my STM32Cube IDE for finding the particular task CPU usage.

But, FreeRTOS Task List windows not updating the "Run Time" column value and it's showing the "N/A"

Could you tell me what is issue with IDE or if anything the FreeRTOS configuration side missing? or any version issue?

For more clarification, I have attached the screenshots from the document as well as from STM32Cube IDE.

My Hardware and Software details:

Hardware :

- STM32H745 Discovery board.

Software :

- STM32Cube IDE

- Version : 1.8.0

- Application side currently I am running two tasks.

Thanks In Advance0693W00000QNAPuQAP.png Image: STM32Cube IDE

0693W00000QNAMgQAP.png

11 REPLIES 11

In order to solve the CTR OVR issue i configured TIM6 as interrupt triggered priority 0, it triggers every 0,1ms, incrementing a uint64_t variable.

/* USER CODE BEGIN 1 */
extern uint64_t freertosRunTimeCounter;
extern TIM_HandleTypeDef htim6;
/* Functions needed when configGENERATE_RUN_TIME_STATS is on */
__weak void configureTimerForRunTimeStats(void)
{
  freertosRunTimeCounter=0;
  HAL_TIM_Base_Start_IT(&htim6);
}
 
__weak unsigned long getRunTimeCounterValue(void)
{
return freertosRunTimeCounter;
}
/* USER CODE END 1 */

/**
  * @brief This function handles TIM6 global interrupt.
  */
void TIM6_IRQHandler(void)
{
  /* USER CODE BEGIN TIM6_IRQn 0 */
  freertosRunTimeCounter++;
  /* USER CODE END TIM6_IRQn 0 */
  HAL_TIM_IRQHandler(&htim6);
  /* USER CODE BEGIN TIM6_IRQn 1 */
 
  /* USER CODE END TIM6_IRQn 1 */
}

0693W00000QNsW6QAL.png 

we dont need to firmware by ourselves, lets talk
Semer CHERNI
ST Employee

Hello

The user guide instructions contains PSEUDO Code. The reason to use the Pseudo code is that there are many use case depending on the used libraries , hardware configuration, available system resources, etc...

Here are an example implementation based on the HAL library.

FreeRTOS debugging on STM32 – CPU usage – MolesBlog (the78mole.de)

Kind regards,

Semer.

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.