HAL_RCC_GetSysClockFreq()函数的定义位于stm32fxx_hal_rcc.c文件中,隶属于复位与时钟模块RCC,见下图:
此函数关于时钟频率的计算是建立在内部时钟源HSI_VALUE(如果选择的是这个时钟源),或者外部时钟源HSE_VALUE(如果选择的是这个时钟源)确定的情况下,通常情况下,这两个时钟源数值被定义为常量8000000hz,存放在stm32f1xx_hal_conf.h文件中,如下图
而且在cubeMX 的时钟树中这两个值也是不可选的,如下图,但是如果用户使用了非8M的外部晶振,那么这个数值就要手动更改,以保证系统获得的SystemCoreClock数值是正确的,系统各运行时基是准确的。并且即便是用的内部时钟源HSI也是不稳定的,会随着温度电压值的变化而变化。
注:此函数最终获得的是SYSCLK frequency,就是上图中绿色标注的地方的频率