2025-05-27 8:24 AM - last edited on 2025-05-27 8:29 AM by Andrew Neil
Hi all,
I am currently using the Nucleo-H723ZG and having difficulties with the clock management using version 1.12.1 of the stm32h7 cubeMx package.
The first symptom I encountered was that my USART2 baudrate was three times lower than expected. A few researches led me to posts where similar issues where described and supposed to be patched in 1.12.1 as in this post.
Digging a bit more on the subject, I noticed that HAL_RCC_GetPCLK1Freq(); and HAL_RCC_GetPCLK2Freq(); were both returning very strange values. Both functions output 429687488 which is way to high considering that STM32CubeMX caps the value at 137.5Mhz in the GUI. Following on this I got the following results:
HAL_RCC_GetHCLKFreq() -> 859374976
HAL_RCC_GetSysClockFreq() -> 1718749952
which doesn't look wright at all...
Am I missing anything here ? Is is possible that my stlink outputs a frequency above the standard 8MHz ?
I am pasting my SystemCLock_Config() fonction, in case I messed up something in it:
/**
* @brief System Clock Configuration
* @retval None
*/
void SystemClock_Config(void) {
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
/** Supply configuration update enable
*/
HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY);
/** Configure the main internal regulator output voltage
*/
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0);
while (!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {
}
/** Initializes the RCC Oscillators according to the specified parameters
* in the RCC_OscInitTypeDef structure.
*/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 4;
RCC_OscInitStruct.PLL.PLLN = 275;
RCC_OscInitStruct.PLL.PLLP = 1;
RCC_OscInitStruct.PLL.PLLQ = 4;
RCC_OscInitStruct.PLL.PLLR = 2;
RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_1;
RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE;
RCC_OscInitStruct.PLL.PLLFRACN = 0;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
Error_Handler();
}
/** Initializes the CPU, AHB and APB buses clocks
*/
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
| RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2
| RCC_CLOCKTYPE_D3PCLK1 | RCC_CLOCKTYPE_D1PCLK1;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2;
RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2;
RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2;
RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2;
RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_3) != HAL_OK) {
Error_Handler();
}
}Thanks in advance for the help
Solved! Go to Solution.
2025-05-28 6:25 AM
If I generate code with your IOC file, it all looks as expected. HSE_VALUE is 8000000 within the stm32h7xx_hal_conf.h file. Perhaps you didn't regenerate code?
2025-05-27 8:32 AM
Maybe your HSE_VALUE is set incorrectly. Check your clock configuration tab.
Include the IOC file that generates the problematic code.
2025-05-28 12:12 AM
Thank you for your answer.
I have modified the default macro in stm32h7xx_hal_conf.h from:
#define HSE_VALUE 25000000
to
#define HSE_VALUE 8000000
and it seems to fix the issue. 8 to 24MHz is roughly x3 so this would also explain the UART issue. Could it be possible that there is a macro definition missing from cubeMx generation ?
In the IOC file the RCC configuration seems correct: ```RCC.HSE_VALUE=8000000```
I have attached my IOC file to this message.
2025-05-28 6:25 AM
If I generate code with your IOC file, it all looks as expected. HSE_VALUE is 8000000 within the stm32h7xx_hal_conf.h file. Perhaps you didn't regenerate code?
2025-05-28 7:34 AM
That's weird... In fact it's a value I never modified to begin with. But I did update my stm32h7 software package to 1.12.1, maybe I forgot to regenerate since, as you said. I'll investigate on my end.
Anyway the issue is solved, I'm marking the thread as resolved.
Thanks for the help!
We’re moving the ST Community to a new platform to give you a better and more reliable community experience.