主要是讲解怎么看懂这个图。

一、内置RC振荡器(HSI RC)

频率是约为8MHz,因为其频率不是很稳定。其可作为系统时钟的一个选项。

二、晶振振荡器(HSE OSC)

从图中可以看到其是一个高速的外部时钟。一般接一个8MHz的晶振,这个晶振可以是4-16MHz这个范围,其可以作为选择器PLLXTPRE的输入,也可以两分频后作为选择器PLLXTPRE的输入,还可以作为系统时钟的一个时钟源。

三、PLLMUL

这是一个倍频器,从图中可以看到,它可以将频率乘以2-16,得到翻倍的频率。倍频器的频率也可以作为系统时钟的一个时钟源。而倍频器的来源从图中也可以看到,其来源为HSI RC的两分频、HSE OSC、HSE OSC的两分频。

四、系统时钟

系统时钟是整个系统中最重要的部分,由前面三个可以知道,系统时钟的三个来源。

五、CSS

CSS是一个时钟监控单元,由于HSE OSC是一个外部的晶振提供的,所以有不确定性,CSS就是起到监控作用,一旦检测到外部晶振不起振就将时钟源更换为HSI RC。

六、LSE OSC

是一个外接的低速时钟源,其作用是给RTC时钟。RTC时钟的来源还可以是HSE OSC的128分频以及LSR RC。

七、LSR RC

是一个低速的内部时钟,频率约为40kHZ,也不是很稳定。可以作为独立看门口狗的时钟。

八、MSO

作为时钟的输出引脚,该引脚为PA8。频率来自系统时钟或者HSI RC、HSE OSC、PLLMUL的两分频。

九、USBCLK

来源是PLLMUL经过USB预分频器得到,可以是1倍或者1.5倍。

十、AHB

是一个分频器,可将系统时钟进行1-512分频。AHB分频后可以得到HCLK。AHB分频后再经过APB1、APB2分频可以给其它的外设使用,具体的可以通过图看到。所以当我们在使用外设时需要使能相应总线的时钟。

stm32F103 cubemax 内部晶振_寄存器

typedef struct
{
  __IO uint32_t CR;        //使能HSI、HSE、CSS、PLLMUL
  __IO uint32_t CFGR;        //时钟源选择以及分频系数的设置
  __IO uint32_t CIR;        //清除/使能时钟就绪中断
  __IO uint32_t APB2RSTR;        //APB2总线上外设复位寄存器
  __IO uint32_t APB1RSTR;        //APB1总线上外设复位寄存器
  __IO uint32_t AHBENR;       //DMA、SDIO等时钟的使能
  __IO uint32_t APB2ENR;        //APB2总线上外设时钟的使能
  __IO uint32_t APB1ENR;        //APB1总线上外设时钟的使能
  __IO uint32_t BDCR;        //备份域控制寄存器
  __IO uint32_t CSR;        //控制状态寄存器
#ifdef STM32F10X_CL  
  __IO uint32_t AHBRSTR;
  __IO uint32_t CFGR2;
#endif /* STM32F10X_CL */
#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL)   
  uint32_t RESERVED0;
  __IO uint32_t CFGR2;
#endif /* STM32F10X_LD_VL || STM32F10X_MD_VL || STM32F10X_HD_VL */
} RCC_TypeDef;