James Bryant

【转】STM32F407 RCC时钟配置

0
阅读(1276)

新上手项目需要使用STM32F407,在使用STM32F1系列时就喜欢自己用库函数设置系统时钟,所以F4也打算这么做,但是遇到了一些问题。

其中百度文库有篇文章关于RCC的文章将的不错,地址:http://wenku.baidu.com/link?url=6mbgKXNIhl4XGqnvp0GzCweLVfldIjzDUMo90lfcKx1YwC7d-3JX_S20ntl3uJPKQYa5JHHf-WtA6MthmWx6jzd8Ks674SX7CdC0tGRCPx3

我使用的也是其中的函数,但是补充一些里面操作的内容。

设置STM32F407的SYSCLK RCC_PLLConfig(RCC_PLLSource_HSE, PLL_M, PLL_N, PLL_P, PLL_Q);  

其中,PLL_M:PLL VCO的输入时钟,范围1~2M

        PLL_N:PLL VCO output clock between 192 and 432 MHz

        PLL_P:PLL VCO 分频数,must be {2, 4, 6, or 8},此分频作为SYSCLK

        PLLQ:OTG FS, SDIO and RNG的分频数,between 4 and 15  并且,如果使用USB OTG FS,那么此分频评论<=48MHZ

同时有两个计算公式。

PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N 

SYSCLK=PLL_VCO/PLL_P

USB OTG FS, SDIO and RNG Clock =  PLL_VCO / PLLQ 

根据以上,我们可以很快就可以搞定STM32F407的系统能够时钟了。比如外部晶振是8MHZ的话,想要得到72M,那么PLL_M=8,PLL_N=288,PLL_P=4 即可得到。PLLQ=6