SM32时钟学习小结

STM32时钟小结

STM32时钟是学习STM32的一个重要知识,但之前自己的学习经常是一些零散的知识,缺乏对时钟树有一个很好的概念,比如在设置ADC时钟,UART波特率…经常搞不清自己的时钟到底是多少HZ,记忆对我来说是一个不靠谱的东西,所以也是借鉴别人一些好的对时钟的理解整理,写一篇博客记录下来方便自己查找和复习。
参考文章sakwe,这位也是我很喜欢博主,经常会分享一些关于物联网方面的文章。

看懂时钟系统框图

在这里插入图片描述
众所周知STM32有5个时钟源HSI、HSE、LSI、LSE、PLL,其实他只有四个,因为从上图中可以看到PLL都是由HSI或HSE提供的。

其中,高速时钟(HSE和HSI)提供给芯片主体的主时钟.低速时钟(LSE和LSI)只是提供给芯片中的RTC(实时时钟)及独立看门狗使用,图中可以看出高速时钟也可以提供给RTC。内部时钟是在芯片内部RC振荡器产生的,起振较快,所以时钟在芯片刚上电的时候,默认使用内部高速时钟。而外部时钟信号是由外部的晶振输入的,在精度和稳定性上都有很大优势,所以上电之后我们再通过软件配置,转而采用外部时钟信号.

名词解释

  1. 高速外部时钟(HSE):以外部晶振作时钟源,晶振频率可取范围为4~16MHz,我们一般采用8MHz的晶振。
  2. 高速内部时钟(HSI): 由内部RC振荡器产生,频率为8MHz,但不稳定。
  3. 低速外部时钟(LSE):以外部晶振作时钟源,主要提供给实时时钟模块,所以一般采用32.768KHz。
  4. 低速内部时钟(LSI):由内部RC振荡器产生,也主要提供给实时时钟模块,频率大约为40KHz。

时钟流动过程

OSC_OUT和OSC_IN开始,这两个引脚分别接到外部晶振8MHz,第一个分频器PLLXTPRE,遇到开关PLLSRC(PLL entry clock source),我们可以选择其输出,输出为外部高速时钟(HSE)或是内部高速时钟(HSI)。

这里选择输出为HSE,接着遇到锁相环PLL,具有倍频作用,在这里我们可以输入倍频因子PLLMUL,要是想超频,就得在这个寄存器上做手脚啦。
经过PLL的时钟称为PLLCLK,倍频因子我们设定为9倍频,也就是说,经过PLL之后,我们的时钟从原来8MHz的 HSE变为72MHz的PLLCLK。紧接着又遇到了一个开关SW,经过这个开关之后就是STM32的系统时钟(SYSCLK)了。通过这个开关,可以切换SYSCLK的时钟源,可以选择为HSI、PLLCLK、HSE。我们选择为PLLCLK时钟,所以SYSCLK就为72MHz了。PLLCLK在输入到SW前,还流向了USB预分频器,这个分频器输出为USB外设的时钟(USBCLK)。

回到SYSCLK,SYSCLK经过AHB预分频器,分频后再输入到其它外设。如输出到称为HCLK、FCLK的时钟,还直接输出到SDIO外设的SDIOCLK时钟、存储器控制器FSMC的FSMCCLK时钟,和作为APB1、APB2的预分频器的输入端。GPIO外设是挂载在APB2总线上的, APB2的时钟是APB2预分频器的输出,而APB2预分频器的时钟来源是AHB预分频器。因此,把APB2预分频器设置为不分频,那么我们就可以得到GPIO外设的时钟也等于HCLK,为72MHz了。

SYSCLK:系统时钟,STM32大部分器件的时钟来源。主要由AHB预分频器分配到各个部件。

HCLK:由AHB预分频器直接输出得到,它是高速总线AHB的时钟信号,提供给存储器,DMA及cortex内核,是cortex内核运行的时钟,cpu主频就是这个信号,它的大小与STM32运算速度,数据存取速度密切相关。

FCLK:同样由AHB预分频器输出得到,是内核的“自由运行时钟”。“自由”表现在它不来自时钟 HCLK,因此在HCLK时钟停止时
FCLK 也继续运行。它的存在,可以保证在处理器休眠时,也能够采样和到中断和跟踪休眠事件 ,它与HCLK互相同步。

PCLK1:外设时钟,由APB1预分频器输出得到,最大频率为36MHz,提供给挂载在APB1总线上的外设,APB1总线上的外设如下:

RCC_APB1Periph_TIM2  TIM2时钟
RCC_APB1Periph_TIM3  TIM3时钟
RCC_APB1Periph_TIM4  TIM4时钟
RCC_APB1Periph_WWDG  WWDG时钟
RCC_APB1Periph_SPI2  SPI2时钟
RCC_APB1Periph_USART2  USART2时钟
RCC_APB1Periph_USART3  USART3时钟
RCC_APB1Periph_I2C1  I2C1时钟
RCC_APB1Periph_I2C2  I2C2时钟
RCC_APB1Periph_USB  USB时钟
RCC_APB1Periph_CAN  CAN时钟
RCC_APB1Periph_BKP  BKP时钟
RCC_APB1Periph_PWR  PWR时钟
RCC_APB1Periph_ALL  全部APB1外设时钟

>  PCLK2:外设时钟,由APB2预分频器输出得到,最大频率可为72MHz,提供给挂载在APB2总线上的外设,APB2总线上的外设如下:

```c
RCC_APB2Periph_AFIO  功能复用IO时钟
RCC_APB2Periph_GPIOA  GPIOA时钟
RCC_APB2Periph_GPIOB  GPIOB时钟
RCC_APB2Periph_GPIOC  GPIOC时钟
RCC_APB2Periph_GPIOD  GPIOD时钟
RCC_APB2Periph_GPIOE  GPIOE时钟
RCC_APB2Periph_ADC1  ADC1时钟
RCC_APB2Periph_ADC2  ADC2时钟
RCC_APB2Periph_TIM1  TIM1时钟
RCC_APB2Periph_SPI1  SPI1时钟
RCC_APB2Periph_USART1  USART1时钟
RCC_APB2Periph_ALL  全部APB2外设时钟

除特别注明,您可以自由的转载和修改,但请务必注明文章来源且不可用于商业目的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值