参考文章 :http://blog.youkuaiyun.com/kevinhg/article/details/17517117
关于 STM32 的时钟, 一共有 5 个时钟源 : HSI、HSE、LSI、LSE、PLL
1、 HSI :高速内部时钟, RC 振荡器, 频率为 8MHz
2、 HSE :高速外部时钟, 可接石英/陶瓷谐振器, 或者接外部时钟源, 频率范围4~16M
3、 LSI :低速内部时钟, RC 振荡器, 频率为 40KHz
4、 LSE :低速外部时钟, 接 32.768KHz 的石英晶体
5、 PLL :锁相环倍频输出, 时钟输入源可选择为HSI/2、HSE 或者 HSE/2。倍频范围 2~16 倍。对于
Cortex-M3 系列, 频率最大频率输出不能超过 72MHz
二、在 STM32 上如果不使用外部晶振,OSC_IN 和 OSC_OUT 的接法 :
如果使用内部 RC 振荡器而不使用外部晶振,请按照下面方法处理 :
① 对于 100 脚或 144 脚的产品, OSC_IN 应接地, OSC_OUT 应悬空。
② 对于少于 100 脚的产品, 有 2 种接法 :
第 1 种 :OSC_IN 和 OSC_OUT 分别通过 10K 电阻接地。此方法可提高 EMC 性能;
第 2 种 :分别重映射 OSC_IN 和 OSC_OUT 至 PD0 和 PD1, 再配置 PD0 和 PD1 为推
挽输出并输出 '0'。此方法可以减小功耗并(相对上面)节省 2 个外部电阻。
三、用 HSE 时钟, 程序设置时钟参数流程:
01、将 RCC 寄存器重新设置为默认值 RCC_DeInit;
02、打开外部高速时钟晶振 HSE RCC_HSEConfig(RCC_HSE_ON);
03、等待外部高速时钟晶振工作 HSEStartUpStatus = RCC_WaitForHSEStartUp();
04、设置 AHB 时钟 RCC_HCLKConfig;
05、设置高速 AHB 时钟 RCC_PCLK2Config;
06、设置低速速 AHB 时钟 RCC_PCLK1Config;
07、设置 PLL RCC_PLLConfig;
08、打开 PLL RCC_PLLCmd(ENABLE);
09、等待 PLL 工作 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
10、设置系统时钟 RCC_SYSCLKConfig;
11、判断是否 PLL 是系统时钟 while(RCC_GetSYSCLKSource() != 0x08)
12、打开要使用的外设时钟
四、下面是 STM32 软件固件库的程序中对 RCC 的配置函数(使用外部 8MHz 晶振)
/****************************************************************
* Function Name : RCC_Configuration
* Descript