STM32F103 ly个人回顾总结之时钟系统
作者:互联网
1.很多初学者不理解时钟对于单片机的意义,简单来说,时钟源就像一个发动机,产生的时钟就是单片机的动力。
2.STM32 有以下 4 个时钟源 :
1)高速外部时钟(HSE):以外部晶振作为时钟源,STM32F103我们一般采用 8 MHz 的晶振,STM32F407性能更高,我们一般采用25M。
2)高速内部时钟(HSI):由内部 RC 振荡器产生,频率为 8 MHz,但不够稳定和精准。
3)低速外部时钟(LSE):以外部晶振作为时钟源,主要提供给实时时钟模块,一般采用 32.768 kHz。
4)低速内部时钟(LSI):由内部 RC 振荡器产生,主要提供给实时时钟模块,频率约为 40 kHz。
3. 说完晶振和时钟源那么PLL倍频就出来了,外部8m晶振,而内部桥的频率常使用72M,怎么来的呢?(以下介绍引用自野火 零死角玩转STM32)
1)单片机的的 OSC_OUT 和 OSC_IN 两个引脚分别接到外部晶振的两端获得8m晶振输入。
2)8 MHz 的时钟通过第一个分频器 PLLXTPRE(HSE divider for PLL entry),在这个分频器中,可以通过寄存器配置,选择它的输出。它的输出时钟可以是对输入时钟的二分频或不分频。我们选择不分频,所以经过 PLLXTPRE 后,还是 8MHz 时钟。
3)8MHz 的时钟遇到开关 PLLSRC(PLL entry clock source),我们可以选择其输出,输出为外部高速时钟(HSE)或是内 部 高速时钟(HSI)。这里选择输出为 HSE,接着遇到锁相环 PLL,具有倍频作用,在这里我们可以输入倍频因子 PLLMUL(PLL
multiplication factor)。经过 PLL 的时钟称为 PLLCLK。倍频因子我们设定为 9 倍频,也就是说,经过 PLL 之后,我们的时钟从原来 8MHz 的 HSE 变为 72 MHz 的 PLLCLK。
4)紧接着又遇到了一个开关 SW,经过这个开关之后就是 STM32 的系统时钟(SYSCLK)了。通过这个开关,可以切换 SYSCLK 的时钟源,可以选择 HSI、PLLCLK或 HSE。我们选择 PLLCLK 时钟,所以 SYSCLK 就为 72 MHz 了。
5)PLLCLK 在输入到 SW 前,还流向了 USB 预分频器,这个分频器输出为 USB 外设的时钟(USBCLK)。
6)回到 SYSCLK, SYSCLK 经过 AHB 预分频器,分频后再输入到其他外设。如输出到称为 HCLK、FCLK 的时钟,还直接 输 出到 SDIO 外设的 SDIOCLK 时钟、存储器控制器 FSMC 的 FSMCCLK 时钟,以及作为 APB1、APB2 的预分频器的输入 端。本例设置 AHB 预分频器不分频,即输出的频率为 72 MHz。
7)GPIO 外设是挂载在 APB2 总线上的, APB2 的时钟是 APB2 预分频器的输出,而
APB2 预分频器的时钟来源是 AHB 预分频器。因此,把 APB2 预分频器设置为不分频,我
们就可以得到 GPIO 外设的时钟也等于 HCLK,即 72 MHz。
经过一系列的倍频、分频后得到了几个与我们开发密切相关的 时钟:
1)SYSCLK :系统时钟,是 STM32 大部分器件的时钟来源,主要由 AHB 预分频器
分配到各个部件。
2)HCLK :由 AHB 预分频器直接输出得到,它是高速总线 AHB 的时钟信号,提供
给存储器、DMA 及 Cortex 内核,是 Cortex 内核运行的时钟,CPU 主频就是这个信号,它
的大小与 STM32 运算速度、数据存取速度密切相关。
3)FCLK :同样由 AHB 预分频器输出得到,是内核的“自由运行时钟”。“自由”
表现在它不来自时钟 HCLK,因此在 HCLK 时钟停止时 FCLK 也继续运行。它的存在可以
保证,在处理器休眠时也能够采样到中断和跟踪休眠事件,它与 HCLK 互相同步。
4)PCLK1 :外设时钟,由 APB1 预分频器输出得到,最大频率为 36 MHz,提供给挂
载在 APB1 总线上的外设。
5)PCLK2 :外设时钟,由 APB2 预分频器输出得到,最大频率可为 72 MHz,提供给
挂载在 APB2 总线上的外设。
未完待续
标签:STM32F103,输出,分频器,APB2,回顾总结,MHz,ly,外设,时钟 来源: https://blog.csdn.net/qq_38006724/article/details/98966444