参考博主,此次参考目的为了学习和巩固。STM32F10x 系统时钟详解_单片机的mco有什么用-CSDN博客
1.时钟源电路
1.接在外部总线上的时钟
1.MCO(Microcontroller clock output)内部时钟输出部分,微控制器时钟输出
也就是输出内部时钟,引脚是PA8。时钟输出部分由SYSCLK(),HSI(内部高速时钟),HSE(外部高速时钟),PLLCLK(PLL倍频器时钟的2分频),注意:1.该时钟输出,在启动和切换MCO时钟源时可能会被截断。2.在系统时钟作为输出源时,输出时钟频率不超过50MHz(IO口最高频率)。
2.HSE OCS(High speed external Clock Signal)高速外部时钟
外接晶振的范围4-16M。一般来说会外接一个8M的晶振。它可以直接作为选择器①的输入,或者2分频后作为选择器①的输入。还可以作为系统时钟的时钟源,也就是选择器③的输入。另外还可以被128分频作为内部rtc(相当于DS1302芯片在stm32内部填充)的时钟输入。RTC(Real time clock)实时时钟。
是用来选择那个线路被启用。
3.LSE RC(Low speed extrenal Clock Signal)外部低速时钟32.768khz
外部低速时钟通过一条线连接在选择器上,作为内部实时时钟的输入RTC(real time clock)。
2.接在内部总线上的时钟
1.HSI RC(High speed internal RC)内部RC振荡器产生
内部RC振荡器产生的一般为8Mhz的时钟信号。1.当由于受到外界环境影响(温度等),所以当系统启动之后先启动内部RC震荡器电路当做时钟,再启动HSE OSC(外部高速时钟)当外部高速时钟稳定后再使用外部高速时钟作为系统时钟。2.也可以2分频后作为选择器②的输入,再倍频给系统时钟。
2.LSI RC(Low speed internal RC)内部RC振荡器产生
内部低速RC振荡器产生的是40khz(不稳定)的时钟信号,可以作为内部实时时钟的输入RTC(real time clock)还可以作为独立看门狗时钟的输出。
3.倍频器(PLL)
将输入的信号进行倍频放大频率阈值:1. 2到16。(放大2到16倍)。例如8MHZ x 9 = 72MHZ。
2. 关闭时,不进行信号放大。此时 8MHZ x 1 = 8MHZ。
4.时钟监控系统CSS
我们经常会使用HSE外部晶振时钟作为PLL的输入,最终产生系统时钟。如果外部晶振突然坏了,会导致系统时钟崩溃。这时候,CSS时钟监控系统,一旦检测到HSE外部时钟信号丢失,可以自动切换SYSCLK=HSI,也就是自动切换内部时钟信号。
5.分频器(预分频器与分频器)图中黄色都是分频器
AHB分频器,总线分频器,分频系数一共有9种,我们一般设置系统时钟SYSCLK是72MHz,AHB分频系数设为1,这时HCLK的频率为72MHz。
AHB分频器可以经过APB1分频器,通过APB1的分频,产生PCLK1的时钟。PCLK1时钟,可以挂一些低速的外设,比如通用定时器。
AHB分频器可以经过APB2分频器,通过APB2的分频,产生PCLK2的时钟。PCLK2时钟,可以挂一些高速的外设,比如定时器1(高级定时器)。
6.usb时钟系统
USB时钟,一般情况是48MHz,来源PLLCLK倍频器时钟经过USB分频器,USB分频器可以分频1倍或者1.5倍,因为USB时钟频率一般是48MHz,分频系数只有1和1.5,所有PLLCLK倍频器时钟的频率一般设为48MHz或者72MHz。例如:PLL倍频器输出72MHZ信号,USB分频器采用1.5分频,72 x 2/3 = 48MHZ。
7.注解
APB分频器,分频因子共有5种,1、2、4、8、16。下面挂载很多外设,在使用任何外设之前,都要使能相应的时钟。如果不使用外设,还打开APB分频器,就比较耗电。
8.外部高速时钟的输入
1.旁路模式(HSE),就是外部为有源晶振不需要内部的电路网络对信号进行处理
2.开启模式(HSE),此时内部电路与外部晶振(无源)之间构成时钟发生电路。
注解:二者的区别是在OCS_IN引脚上是否有外部恒定的时钟信号输入。
旁路模式有恒定的时钟信号输入。开启模式外部晶振与内部电路组合产生时钟输出电路。
RCC_HSE_Bypass模式则表示外部时钟绕过HSE振荡器。这通常用于当外部有源晶振的频率与HSE的默认频率不匹配时。在这种模式下,外部时钟信号直接输入到时钟安全系统(CSS)的时钟输入端,而不需要经过HSE振荡器。