There is a bug in TIM's work on stm32h750, but on stm32f407 everything works fine. Please check the results on your controller.
#include "stm32h7xx_hal.h"
extern void SystemClock_Config_16MHz(void);
uint32_t DBG32[10];
//======================
void delay(uint32_t wait){
while(wait--);
}
//==================
void Test_TIM(){
HAL_Init();
SystemClock_Config_16MHz(); // my quarc = 16MHz => pll1=400MHz
TIM_HandleTypeDef TimHandle;
__HAL_RCC_TIM2_CLK_ENABLE();
TimHandle.Instance = TIM2;
TimHandle.Init.Period = (uint32_t)-1;
TimHandle.Init.Prescaler =0;// == 200MHz;
TimHandle.Init.ClockDivision = 0;
TimHandle.Init.CounterMode = TIM_COUNTERMODE_UP;
TIM_Base_SetConfig(TimHandle.Instance, &TimHandle.Init);
__HAL_TIM_ENABLE(&TimHandle);
// --------
__disable_irq();
TIM2->CNT =0;
DBG32[0]=TIM2->CNT;
delay(1);
DBG32[1]=TIM2->CNT;
delay(1);
DBG32[2]=TIM2->CNT;
delay(1);
DBG32[3]=TIM2->CNT;
delay(1);
DBG32[4]=TIM2->CNT;
delay(3);
DBG32[5]=TIM2->CNT;
delay(3);
DBG32[6]=TIM2->CNT;
delay(3);
DBG32[7]=TIM2->CNT;
delay(3);
DBG32[8]=TIM2->CNT;
while(1);
// DBG32[0..8]=2,42,94,134,172,236,284,310,342
// delta= DBG32[i]-DBG32[i-1]== 40,52,40,38, 64,48,26,32 !! nonsense !!
// in stm32f407 == all OK, but in stm32h750 == bug !!!
