3.STM32的时钟系统

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


1.拥有时钟源
由于STM32的外设很多,有的外设不需要太高的时钟频率。。同一个电路,时钟越快功耗越大,同时抗电磁干 扰能力也会越弱,所以对于较为复杂的 MCU 一般都是采取多时钟源的方法来解决这些问题。
2.时钟源
在 STM32 中,有五个时钟源,为 HSI HSE LSI LSE PLL
从时钟频率来分可以分为:高速时钟源和低速时钟源,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行的系统时钟的宏定义,注释与取消注释来改变系统时钟的设置。


猜你喜欢

转载自blog.csdn.net/qq_40891541/article/details/80502351