STM32时钟配置

Stm32的时钟配置

** 时钟的来源**在Stm32中,有5个时钟源,分别为

时钟源说明
HSI (高速内部时钟)RC振荡器,频率为8MHz
HSE (高速外部时钟)外接的有源或无源晶振,常用8M、16M、25M等频率,是实际应用中主要使用的时钟源
LSI (低速内部时钟)RC振荡器,频率40KHz
LSE(低速外部时钟)外接32.768kHz的晶振,主要给RTC时钟使用,不使用RTC功能可不接
PLL(锁相环倍频输出)将内部或外部时钟倍频得到的频率,该频率可作为系统时钟,在Stm32F1中系统时钟最高频率为72M ,系统时钟也可由HSI HSE提供,但通常是由PLL作为系统时钟源

使用Stm32CobeMX可以很直观地了解整个时钟树的构成

在这里插入图片描述

系统时钟,其中左下角8M的input frequency 就是外接晶振的频率,作HSE时钟源,要得到需要的sysclk需要对HSE分频,然后选择PLL的源为HSE,然后经倍频后在选择PLLclk作为sysclk的源

1、在标准库中,一般设置外部高速晶振频率的地方在stm32f10x.h中,可以按需修改
在这里插入图片描述

2、在标准库中,stm32f10x.h的SystemInit函数中初始化时钟配置
使能内部高速时钟,复位时钟源选择、HSE、PLL、CSS等功能,旁路外部高速时钟晶体振荡器—使用外部震荡器(有源晶振)需要旁路掉芯片内部自带的振荡器,设置HSI时钟2分频后作为PLL时钟源、HSE不分频、PLL2倍频作系统时钟、PLL1.5倍频作USB时钟 。
然后调用SetSysClock();函数自由配置时钟参数。标准库这里通过宏定义判断设置的目标频率选择函数
在这里插入图片描述
主频宏定义在syste_Stm32f10x.c中
在这里插入图片描述

3、当选择72M频率时,SetSysClockTo72()函数分析
a、打开HSE使能在这里插入图片描述
b、使能预取缓冲区; 设置SYSCLK 周期与闪存访问时间的比例为2,设置成 2 的时候, SYSCLK 低于 48M 也可以工作,如果设置成 0 或者 1 的时候,如果配置的 SYSCLK 超出了范围的话,则会进入硬件错误,程序就死了
在这里插入图片描述
c、设置预分频,如上时钟树图中,相当于AHB prescaler、APB1 prescaler、 APB2 prescaler三个框分别设置为1、2、1
在这里插入图片描述
c、设置PLL的源为HSE、倍频系数为9、打开PLL
在这里插入图片描述
d、选择PLL作为系统时钟源
在这里插入图片描述
所以设置完成后通过使能HSE、PLL,选择HSE不分频作为PLL的源,选择PLL9倍频作为系统时钟源得到72M的系统时钟;AHB不分频,APB12分频,APB2不分频,USB1.5分频得到相应的外设时钟(见时钟树图)

参考文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值