3.3 ST固件库中提供的PLL配置函数 voidRCC_PLLConfig(uint32_tRCC_PLLSource,uint32_tPLLM,uint32_tPLLN,uint32_tPLLP,uint32_tPLLQ);
RCC_PLLSource为PLL的时钟源选择, 可选择为RCC_PLLSource_HSE或者RCC_PLLSource_HSI.
这里的PLLM, PLLN, PLLP, PLLQ便指的是上述的几个分频器的分频因子.
并且这些分频因子取值是有限制如下:
2 <= PLLQ <= 15
2 <= PLLM <= 63
192 <= PLLN <= 432
PLLP 只能是2, 4, 6, 8其中之一.
其中PLLN就是PLL的倍频倍数N.
并且, PLL之后得到的频率不得超过器件的限制频率. 举个实际的例子, 外部晶振为8MHz, 我们想让CPU运行于168MHz, 该怎么配置?
因为PLLM最小只能是2, 所以选择PLLM为2.
这里8MHz的HSE被PLLM二分频后只有4MHz了.
PLLP最小也只能是2, 我们所需要的SYSCK为168MHz, 所以从VCO出来的频率为168 * 2 = 336MHz.
则倍频倍数N为336 / 4 = 84, 所以PLLN为84.
PLLQ是USB OGT FS的时钟, 固定为48MHz, 所以预分频因子为336 / 48 =7.
则PLL配置函数应该为:
RCC_PLLConfig(RCC_PLLSource_HSE,2,84,2,7); 当然只使用这一句就不可能让PLL工作的, 还需要配合其它配置才行.
|