stm32 系统时钟的配置-凯发旗舰

×
单片机 > 单片机程序设计 > 详情

stm32 系统时钟的配置

发布时间:2024-07-31 发布时间:
|

1.时钟的驱动 
有三种不同的时钟源可被用来驱动系统时钟: 
● 内部高速 (hsi)8mhz rc 振荡器时钟 
● 外部高速 (hse) 振荡器时钟 
● pll 时钟

2.系统时钟的简介 
在stm32中,我们说要配置系统时钟就是指的配置下图标识红色的部分“sysclk(系统时钟)”.系统时钟sysclk是同stm32中绝大部分期间工作的时钟源,如下图所示,系统时钟可以为iic, ahb,apb,dma等配置时钟。 

3.系统时钟的配置 
例:如果在外部接入8mhz的晶振,需要配置成48mhz的系统时钟。 
分析:因为要使用8mhz的外部时钟,得到48mhz的系统时钟,则需要不分频使其倍频6倍得到系统时钟,因而我准备配置的路线如 下图所示 
 
3.1 因为要得到48mhz的系统时钟,则选用hse外部震荡时钟进行驱动。在rcc->cr寄存器中使hseon位为1,则表示hse振荡器开启; 
3.2 由硬件设置, 表明 hse 振荡器是否稳定。仍是rcc-cr寄存器,当hse振荡器就绪时,硬件将置hserdy位为1. 
3.3 在图中应该可以看出,下一步是进行rcc->cfgr2寄存器例prediv分频的操作了,但是请注意prediv[3:0] prediv 分频因子 
这些位用于设置或清除 prediv 分频因子。 这些位仅能在 pll 关闭些改写。所以在此之前应该要先关闭pll。所以使rcc->cr寄存器里的pllon关闭。等待pllrdy位锁定。 
3.4 开始进行rcc->cfgr2寄存器例prediv分频的操作了,但是因为我们不分频只倍频,所以prediv[3:0] prediv 分频因子为0000(不分频). 
3.5 开始由rcc->cfgr里的pllsrc(输入时钟源)开关置1选择hse/predib作为pll输入时钟。并且进入rcc->cfgr里的pllmul为进行倍频选择,我们要6倍倍频,所以选择倍频因子为6(0100) 
3.6 倍频完后,使能寄存器rcc->cr的pllon位,并且等待硬件置位rc->cr寄存器里的pllrdy。 
3.7 在过sw开关时选择pllclk输出作为系统时钟 
3.8 使能gpio时钟

void systemclock(void) 

rcc->cr|=rcc_cr_hseon; 
while(!(rcc->cr&rcc_cr_hserdy)); 
rcc->cr&=~rcc_cr_pllon; 
while(rcc->cr&rcc_cr_pllrdy); 
rcc->cfgr2=rcc_cfgr2_prediv_div1; 
rcc->cfgr=rcc_cfgr_pllsrc|rcc_cfgr_pllmul6; 
rcc->cr|=rcc_cr_pllon; 
while(!rcc->cr&rcc_cr_pllrdy); 
rcc->cfgr=(rcc->cfgr&~rcc_cfgr_sw)|rcc_cfgr_sw_pll; 
while((rcc->cfgr&rcc_cfgr_sws)!=rcc_cfgr_sws_1); 
rcc->ahbenr|=rcc_ahbenr_gpioaen; 
return; 
}


关键字:stm32  系统时钟  配置 

『本文转载自网络,凯发旗舰的版权归原作者所有,如有侵权请联系删除』

热门文章 更多
stm32问题记录:这回keil编译器背锅
网站地图