系统上电运行LDR R0,=SystemInit 跟踪进去,调用 SetSysClock()函数;
调用 SetSysClock()函数里边有 /*config the main PLL*/这一部分。其中包含以下几个参数:
1.PLL_M
2.PLL_N
3.PLL_P
4.PLL_Q 以上参数在system_stm32f4xx.c定义
以上参数关系如下:(假如我们使用外部晶振,频率为8MHz) 晶振频率在stm32F4xx.h定义 #define HES_VALURE (uint32_t )8000000
PLL_VCO=(HSE_VALUE/PLL_M)*PLLN
SYSCLOK=PLLVCO/PLLP
USB OTG_FS,SD CLOCK =PLLVCO/PLLQ
假如 PLLM定义为8,PLLN定义为336,PLL_P定义为2,PLLQ定义为7,
PLL_VCO=(8/8)*336=336
SYSCLOCK=336/2=168MHZ
USBCLOCK=336/7=48MHZ
假如 PLLM定义为8,PLLN定义为144,PLL_P定义为2,PLLQ定义为3,
PLL_VCO=(8/8)*144=144
SYSCLOCK=144/2=72MHZ
USBCLOCK=144/3=48MHZ