这里有一张clock tree,非常详细,从这个图中就可以知道clock之间的继承关系。
system clock可以通过RCC_CFGR寄存器的SW[0:1]来选择是用HSI、HSE、PLL的哪个source;
AHB clock 可以通过RCC_CFGR寄存器的HPRE[0:3]设定分频(1 2 4 8 16 64 128 256 512),是从system clock分频出来的;
APB2可以通过RCC_CFGR寄存器的PPRE2[0:2]设定分频(1 2 4 8 16),是从AHB clock分频出来的;
APB1可以通过RCC_CFGR寄存器的PPRE1[0:2]设定分频(1 2 4 8 16),是从APB2 clock分频出来的;
HSE_RTC可以通过RCC_CFGR寄存器的RTCPRE[0:4]设定分频(2~31),是从HSE clock分频出来的;
MCO1是输出pin,可以通过RCC_CFGR寄存器的MCO1[0:1]来选择是用HSI、LSE、HSE、PLL的哪个source;
MCO1是输出pin,可以通过RCC_CFGR寄存器的MCO1PRE[0:2]设定分频(1 ~ 5);
MCO2是输出pin,可以通过RCC_CFGR寄存器的MCO2[0:1]来选择是用system clock、PLLI2S、HSE、PLL的哪个source;
MCO2是输出pin,可以通过RCC_CFGR寄存器的MCO2PRE[0:2]设定分频(1 ~ 5);
I2S clock可以通过RCC_CFGR寄存器的I2SSRC来选择是用PLLI2S、I2S_CLKIN的哪个source;
PLL和PLLI2S可以通过RCC_PLLCFGR寄存器的PLLSRC来选择是用HSI、HSE的哪个source;
f(VCO clock) = f(PLL clock input) × (PLLN / PLLM)
PLL 可以通过RCC_PLLCFGR寄存器的PLLP[0:1]设定分频(2、4、6、8),是从VCO clock分频出来的;
PLL48CK 可以通过RCC_PLLCFGR寄存器的PLLQ[0:3]设定分频(2~15),是从VCO clock分频出来的;