difference between real measured frequency and set frequency
Hello,
I am dealing with difference between real measured frequency and set on my Nucleo H755ZI-Q.
the measured real frequency :
APB1 76,8 MHz
APB2 76,8 MHz
recalculated
debugging frequencz SWV Core Clock 153,6 MHz
I also try printf debuged frequency:
HSE is enabled and ready.
System Clock: 480000000 Hz
APB1 Timer Clock: 120000000 Hz
APB2 Timer Clock: 120000000 Hz
APB1 Prescaler: 4
APB2 Prescaler: 4
if ((RCC->CR & RCC_CR_HSERDY) != 0) {
printf("HSE is enabled and ready.\n");
} else {
printf("HSE is not enabled or ready.\n");
}
printf("System Clock: %lu Hz\n", HAL_RCC_GetSysClockFreq());
printf("APB1 Timer Clock: %lu Hz\n", HAL_RCC_GetPCLK1Freq());
printf("APB2 Timer Clock: %lu Hz\n", HAL_RCC_GetPCLK2Freq());
uint32_t apb1_prescaler = (RCC->D2CFGR & RCC_D2CFGR_D2PPRE1) >> RCC_D2CFGR_D2PPRE1_Pos;
uint32_t apb2_prescaler = (RCC->D2CFGR & RCC_D2CFGR_D2PPRE2) >> RCC_D2CFGR_D2PPRE2_Pos;
printf("APB1 Prescaler: %lu\n", apb1_prescaler);
printf("APB2 Prescaler: %lu\n", apb2_prescaler);
uint32_t pclk1 = HAL_RCC_GetPCLK1Freq(); // Get APB1 clock
uint32_t pclk2 = HAL_RCC_GetPCLK2Freq(); // Get APB2 clock
printf("APB1 Clock: %lu Hz\n", pclk1);
printf("APB2 Clock: %lu Hz\n", pclk2);
// If prescaler > 1, Timer Clock = PCLK * 2
if (apb1_prescaler > 3) { // Values >3 mean prescaler is applied
printf("APB1 Timer Clock: %lu Hz\n", pclk1 * 2);
} else {
printf("APB1 Timer Clock: %lu Hz\n", pclk1);
}
if (apb2_prescaler > 3) {
printf("APB2 Timer Clock: %lu Hz\n", pclk2 * 2);
} else {
printf("APB2 Timer Clock: %lu Hz\n", pclk2);
}
Edited Code Format
