使用STM32一段时间了,总结一下其时钟系统。
STM32共有 5 个可选时钟源:
①HSI内部高速时钟,集成的 RC 振荡器为8MHz;
②HSE高速外部时钟,选接对应谐振器或时钟源, 4MHz – 16MHz;
③LSI 低速内部时钟, 内部集成RC 振荡器 40KHz;
④LSE 低速外部时钟,外接32.768KHz;
⑤PLL 锁相环倍频输出,倍频可选择为 2–16倍,频率最大有限制,F103不超过72MHz。
40kHz的LSI供IWDG使用,也可作为RTC的时钟源(RTC的时钟源还可选择LSE或者HSE/128)。
STM32全速功能的USB模块,需要一个频率为48MHz的时钟源,只能从 PLL端获取,也就是当需使用到 USB 模块时,PLL必须使能并且输出配置为48MHz或72MHz。
另外STM32还可以将时钟信号输出到MCO脚,可以选择为 PLL输出2分频、HSI、HSE或者系统时钟,但不大于外设时钟的IO的工作频率。
系统时钟 SYSCLK作为STM32中绝大部分部件工作的时钟源,可以选择的最大频率为 72MHz ,它通过AHB分频器分频后送给各个模块使用:
①送给 AHB总线、内核、内存和 DMA 使用的 HCLK时钟;
②通过8分频后送给Cortex的系统定时器时钟STCLK;
③直接送给 Cortex的空闲运行时钟 FCLK ;
④送给 APB1分频器,可以选择 1 、 2、 4 、 8、 16 分频,其输出中一路供APB1外设使用(最大频率 36MHz)。
⑤送给 APB2分频器,可以选择 1 、 2、 4 、 8、 16 分频,其输出中一路供APB2外设使用(最大频率 72MHz)。
AHB外设包括:DMA1、DMA2、SRAM、FLITF、CRC、FSMC、SDIO。
APB1外设包括:TIM2、TIM3、TIM4、TIM5、TIM6、TIM7、WWDG、SPI2、SPI3、USART2、USART3、USART4、USART5、I2C1、I2C2、USB、CAN、BKP、PWR、DAC。由 APB1 提供USB模块的工作时钟,但不提供其串行接口引擎 (SIE)使用的48MHz 时钟。
APB2外设包括:AFIO、IOPA、IOPB、IOPC、IOPD、IOPE、IOPF、IOPG、ADC1、ADC2、TIM1、SPI1、TIM8、USART1、ADC3。