1、我们要设置STM32F407的系统时钟就先需要了解STM32F407的系统时钟系统,下图中就是STM32F407的系统时钟树,从图中可以看出系统时钟共有5个时钟源,内部低速时钟(LSI-32kHz)、内部高速时钟(HSI-16MHz)、外部低速时钟(LSE-32.768kHz)、外部高速时钟(HSE-8MHz),PLL时钟,如下图:
2、配置系统时钟源这里我们使用外部高速时钟作为源头,也就是下图箭头1,通过箭头2(分频),然后通过箭头3(倍频),然后通过箭头4(分频),最后到了箭头5就得到了系统时钟,如下图:
3、下图是STM32F407开发板的原理图中外部高速时钟的原理图,可以看出外部时是一个8MHZ的晶振,如下图:
4、接下来我们来开始在代码中设置系统时钟源,我们在系统的Options for Target的窗口中定义过一个宏定义,当时没有明白为什么这么写,这里先记下这个宏定义【STM32F40_41xxx】,如下图:
5、然后打开【system_stm32f4xx.c】文件,这个文件是系统的一个配置文件,下图中箭头1和箭头3就可以看到上个步骤的宏定义的作用了,箭头2设置的是M(分频因子)的值,箭头4设置的是N(倍频因子)的值,箭头5设置的是P(时钟分频因子)的值,如下图:
6、综合上述的所有条件,就可以得到系统时钟的值为168MHZ了,如下图: