stm32时钟配置总结

stm32时钟配置时钟源:

1,HSE(高速外部时钟)即常见的外接8M晶振方案;

2,HSI(高速内部时钟) 即8M内部振荡时钟方案;

3,LSE(低速外部时钟)即常见的32.768Khz晶振方案;

4,LSI(低速内部时钟)即40Khz的内部震荡时钟方案;

5,PLL(锁相环技术)时钟倍频技术方案;

内部时钟因为精度问题,一般不予以考虑。我们常见的应用办法是,HSE外界8M晶振,然后通过PLL将时钟倍频的时钟配置方案。

正如上图所示,我们硬件上要做的是在OSC_IN和OSC_OUT引脚接入8M的晶振电路,软件上要实现的是将8M的HSE经

PLL转化为系统时钟,进而为各路总线使用。

具体代码实现如下:

 1 void RCC_Configuration(void)
 2 {
 3     //选择HSE时钟
 4     RCC->CR|=(1<<16);
 5     //等待HSE稳定
 6     while(!(RCC->CR>>16));
 7     //PLL时钟来源选择HSE 
 8     RCC_CFGR|=(1<<16); 
 9     //PLL倍频系数选择:9(9*8M=72M)
10     RCC_CFGR|=(7<<18);
11     //FLASH的延时周期为2周期  
12     FLASH->ACR=0x32; 
13     //PLL时钟使能 
14     RCC->|=(1<<24);
15     //等待PLL时钟稳定 
16     while(!(RCC>>24));
17     //配置系统时钟为PLL时钟 
18     RCC_CFGR|=(1<<1);
19     //配置APB1=36M;APB2和AHB都为72M 
20     RCC_CFGR|=(4<<8); 
21     //等待系统时钟稳定 
22     while((RCC_CFGR&(uint32_t)0x0c)!=(uint32_t)0x08); 
23 }
原文地址:https://www.cnblogs.com/achao123456/p/5805324.html