MCU需要在时钟的驱动下才能正常工作,STM32F407 的工作主频最高能达到168MHz,而其外接晶振只有4-26MHz,需要通过内部的数字PLL电路进行配置,才能将内核时钟频率提升至168MHz,那具体需要怎样进行配置呢?其实,stm32的时钟配置相关的函数都在system_stm32f4xx.c这个文件中,这个c文件可以通过ST官方提供的一个xls文件自动生成,这里是对这个c文件做个详细介绍,知道了原理,便可以根据需要手动进行修改了。
首先看下如下图clock tree的PLL部分,系统时钟最大可以168MHz(PLL升频得来),这个需要对PLL进行配置,从下图可知,具体就是要设定P,Q,M,N这四个参数
由于PLLCLK = SourceCLK / M * N / P,这里SourceCLK代表的是PLL电路的输入时钟源,可以是高速外部时钟HSE,也可以是高速内部时钟