STM32有三种不同的时钟源可被用来驱动系统时钟(SYSCLK):
1:HSI振荡器时钟(内部时钟)
2:HSE振荡器时钟 (外部时钟,即晶振所提供)
3:PLL时钟(锁相环时钟)
这些设备有以下2种二级时钟源:
(1)40kHz低速内部RC,可以用于驱动独立看门狗和通过程序选择驱动RTC。RTC用于从停机/待机模式下自动唤醒系统。
(2)32.768kHz低速外部晶体也可用来通过程序选择驱动RTC(RTCCLK)。
当不被使用时,任一个时钟源都可被独立地启动或关闭,由此优化系统功
下面是以外部晶振8M,系统时钟72M为例。
STM32系统时钟初始化流程如下:
1、复位并配置向量表;
2、使能外部高速中断HSEON,并等待就绪;
3、RCC->CFGR=0X00000400;设置APB1,如先把前面的设置好之后,再来设置APB1就已经来不及了,所以必须先二分频,因为要求APB1不超过36MHz,前面最大为72MHz,故二分频即可;
4、RCC->CFGR|=PLL<<18;设置锁相环放大倍数,及时钟树的PLLMUL;
5、RCC->CFGR|=1<<16; 选择HSE作 为PLL输入;
6、FLASH->ACR|=0x32; FLASH 2个延迟周期
7、RCC->CR|=0x01000000; 使能PLL,并等待就绪;
8、RCC-&