IDLE task return 0 ulRunTime

Hi I am running freeRTOS v7.6.0 on an STM32F4 discovery board. I am currently running 14 tasks and im curious to find out some information about which tasks are taking up the most CPU usage and how much head room i have left. I attempted to use uxTaskGetSystemState function and my idle task(which i am assuming will run when the processor is free) is returning a runtime of 0. The runtime of all the other tasks adds up to about 20% of the total runtime(not sure whats happening the other 80%). I have configured an external clock running at 100 times the speed of the rtos tick. I am not sure what i am doing wrong as i am expecting to IDLE task to be running for the majority of the time. External Timer Configuration: ::c //in main.c void TIM5_IRQHandler(void) { /* Check if interrupt has occured / if (TIM_GetITStatus(TIM5, TIM_IT_Update) != RESET) { / Clear interrupt pending bit */ TIM_ClearITPendingBit(TIM5, TIM_IT_Update);
ulHighFrequencyTimerTicks++; //counter incrementing at 100kHz
} } //in FreeRTOSConfig.h extern volatile unsigned long ulHighFrequencyTimerTicks; /* ulHighFrequencyTimerTicks is already being incremented at 20KHz. Just set its value back to 0. */ define configUSESTATSFORMATTINGFUNCTIONS 1 define portCONFIGURETIMERFORRUNTIMESTATS() ( ulHighFrequencyTimerTicks = 0UL ) define portGETRUNTIMECOUNTERVALUE() ulHighFrequencyTimerTicks Configuration of task where function call is made: void vMonitorTask(void *pvParameters) { signed char stats[ 1024]; xTaskStatusType *pxTaskStatusArray; volatile unsigned portBASE_TYPE uxArraySize; unsigned long ulTotalRunTime; for (;;) {
// Take a snapshot of the number of tasks in case it changes while this function is executing.
 uxArraySize = uxTaskGetNumberOfTasks(); //uxCurrentNumberOfTasks();
 WWDG_SetCounter(127);
// Allocate a xTaskStatusType structure for each task. An array could be allocated statically at compile time. pxTaskStatusArray = pvPortMalloc( (uxTaskGetNumberOfTasks()) * (sizeof( xTaskStatusType )) );
 if( pxTaskStatusArray != NULL )
  {
      // Generate raw status information about each task.
      uxArraySize = uxTaskGetSystemState( pxTaskStatusArray, uxArraySize, &ulTotalRunTime );
      WWDG_SetCounter(127);
  }

xTaskStatusType test = pxTaskStatusArray[0];
} } Thanks in advance 🙂

IDLE task return 0 ulRunTime

Presumably the other 80% is used by the idle task but for some reason the value is not being output. Stepping through the uxTaskGetSystemState() in the debugger will show you why that is.