一、STM32系统架构
STM32 主系统主要由四个驱动单元和四个被动单元构成。
四个驱动单元是:(1)内核 DCode 总线(2)系统总线(3)通用 DMA1(4)通用 DMA2
四个被动单元是:(1)AHB 到 APB 的桥:连接所有的 APB 设备(2)内部 FlASH 闪存(3)内部 SRAM(4)FSMC;
AHB/APB 桥:这两个桥在 AHB 和 2 个 APB 总线间提供同步连接, APB1 操作速度限于36MHz,APB2 操作速度全速72MHz。
二、STM32系统时钟
时钟是单片机的核心,如果没有时钟STM32所有外设都不起作用,因此在进行外设配置时,都要首先开启相对应的时钟。
1.在 STM32 中有五个时钟源,为高速内部时钟(HSI)、 高速外部时钟(HSE)、低速内部时钟(LSI)、 低速外部时钟(LSE)、 锁相环倍频输出(PLL)。(1)其中HSI是由内部RC电路产生时钟,频率为 8MHz。(2)HSE 是高速外部时钟, 可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz,一般都是接8MHz。(3)LSI也是由内部RC 振荡器产生时钟,频率为 40kHz, 独立看门狗的时钟源只能是 LSI,同时 LSI 还可以作为 RTC 的时钟源。(4)LSE也是接外部时钟源,频率为 32.768kHz 的石英晶体,主要作为 RTC 的时钟源。(5)PLL 为锁相环倍频输出,其时钟输入源可选择为 HSI/2、 HSE 或者 HSE/2。倍频可选择为2~16 倍,但是其输出频率最大不得超过 72MHz。
2.系统时钟(SYSCLK)是STM32最重要的时钟,所有外设时钟源都是来自系统时钟。系统时钟主要来自三种时钟源1.HSI、2.PLLCLK、3.HSE。如果系统时钟选择HSE作为时钟来源,当HSE失效则由时钟监视系统(CSS)自动切换为HSI时钟源。
3.RTC实时时钟可以来自1.HSE/128、2.LSE、3.LSI
4.MCO可以输出芯片内部时钟,是PA8引脚。可以输出SYSCLK、HSI、HSE、PLLCLK/2。
5.USB时钟源来自系统时钟,在中间还要经过USB分频器,频率为48MHz。
6. HCLK、PCLK1、TIMxCLK、PCLK2、TIM1CLK、ADCCLK都是经过相对应的分频器或倍成器获得最终时钟频率。其中HCLK最高72MHz,PCLK1最高36MHz、PCLK2最高72MHz。
三、常用的时钟寄存器
1.时钟控制寄存器(RCC_CR)
主要是对HSI、HSE、CSS、PLL等时钟源使能和就绪标志位。使能之后需要因时钟会出现振荡,因此需要通过就绪标志位判断是否稳定。