Using the standard peripheral library, include stm32f4xx_rcc.h
then call void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks)
and it will fill in the structure that you pass with the values of all the bus clocks.
The correctness of the answer depends on the value you set for HSI_VALUE
or HSE_VALUE
(a global uint32_t
set to the value in Hz of your system's oscillator). You can find it in your application's startup C file.
You should review the values in the startup file to ensure that the core clock is generated from the source that you expect it to be (usually the PLL via the internal (HSI) or external (HSE) crystal). If they are correct and match the aforementioned global constant then the answers given by RCC_GetClocksFreq
will be correct.