arm时钟配置

一般大家在使用arm程序时,都是参考已经写好的程序,这样下来既方便又省事,但是每当被问及底层的问题时,往往会出现一知半解的情况,当碰到关于出现时钟发面的问题时,往往无从下手。比如系统时钟配置的问题,楼主之前也是挪用成熟的代码,虽然功能实现了,但仍然感觉了解的不太彻底,趁此机会,就好好的看了下系统时钟的代码。

系统时钟在配置时,应用程序在system_stm32f4xx.c库文件中,在该文件中有一个void SystemInit(void)函数,该函数如下:

arm时钟配置

arm时钟配置

函数的前一部分都是对系统寄存器进行初始化操作,具体参考芯片寄存器,主要配置在SetSysClock()函数中,

SetSysClock()函数如下(该函数包括了挺多芯片,这里我选择型的选取的407):

arm时钟配置

arm时钟配置

该处程序主要开启了HSE,以及对HCLK,PCLK2,PCLK1进行初始化,当HSE为8Mhz时,此处的频率略低,那么如何提高频率呢,当然需要PLL了,接下来的程序就是对PLL进行配置,如下

arm时钟配置

函数中的PLL_M, PLL_N, PLL_P, PLL_Q这些配置参数起到很关键的作用,这些参数也是在该文件中进行定义的,具体如下:

arm时钟配置

因此,在修改系统时钟时,修改这些数据的定义即可。到此结束,希望大神能给予更全面的讲解。