(STM32学习)3.STM32的时钟系统

*.STM32时钟系统的配置在system_stm32f10x.c中查看。

(STM32学习)3.STM32的时钟系统_第1张图片

(STM32学习)3.STM32的时钟系统_第2张图片

 

1.拥有时钟源

由于STM32的外设很多,有的外设不需要太高的时钟频率。。同一个电路,时钟越快功耗越大,同时抗电磁干 扰能力也会越弱,所以对于较为复杂的 MCU 一般都是采取多时钟源的方法来解决这些问题。

2.时钟源

在 STM32 中,有五个时钟源,为 HSIHSELSILSEPLL

从时钟频率来分可以分为:高速时钟源和低速时钟源,HIS、HSE、PLL 是高速时钟,LSI LSE 是低速时钟。

从来源可分为外部时钟源和内部时钟源,外部时钟源就是从外部通过接晶振的方式获取时 钟源,其中 HSE 和 LSE 是外部时钟源,其他的是内部时钟源。

3.时钟源名称

HSI :High Speed Interal 高速内部时钟信号(内置RC振荡器,频率为8MHz,精度不高)

HSE:High Speed External 高速外部时钟信号(接外部晶振)

PLL倍频器(原来一直想不通频率为什么可以增加。 一个4M的时钟怎么就可以升高 到40M, 现在明白了,4M的时钟并没有被升高, 而是PLL里的VCO这个东西, 这个东西可以产生一定范围的内的任意频率信号, 频率由输入的电压决定, 但是它无法稳定的输出某一个频率信号,所以外接的4M时钟就是用来作为参照的。   所以真正的倍频的时钟信号都是VCO产生的。 VCO能输出的最高频率就是这个PLL能产生的最高频率了   。VCO 是 压控振荡器的缩写。

CSS:时钟监视系统,若果HSE失效,自动切换为HSI

LSE:Low Speed External 低速时钟信号

LSI: Low Speed Internal 低速时钟信号(内置RC振荡器,40MHz,精度不高 ,主要给独立看门狗做时钟)

RTC:Real Time Clock 实时时钟

MCO:连接引脚PA8,输出时钟信号,如图有4中来源

USB Prescaler:USB预分频器

AHB Presclaer: AHB预分频器,如图有9种分频因子可以选择

5.RCC相关配置寄存器

typedef struct

{

  __IO uint32_t CR;                //HSI,HSE,CSS,PLL等的使能和就绪标志位,用于等待时钟开始和稳定。

  __IO uint32_t CFGR;           //PLL等的时钟源选择,分频系数设定

  __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;           //控制状态寄存器

} RCC_TypeDef;

6.定义系统时钟函数体

根据system_stm32f10x.c中的SetSysClock函数,查看在110行的系统时钟的宏定义,注释与取消注释来改变系统时钟的设置。

 

 

你可能感兴趣的:(STM32开发历程)