接前一篇文章:STM32CubeMX配置步骤详解五 —— 基础配置(2)
本文内容主要参考:
STM32CUBEMX配置教程(一)基础配置-CSDN博客
野火STM32系列HAL库开发教程 —— 第12讲 STM32的复位和时钟控制(第12讲-STM32的复位和时钟控制(RCC)1_哔哩哔哩_bilibili)
【STM32 HAL库】 STM32H743的电源配置和时钟配置 - 哔哩哔哩
特此致谢!
到上一回为止,已经讲解了STM32CubeMX的下载、安装以及基础配置。本回详细讲解系统中时钟树的配置,以及其它内部参数的配置。
四、STM32CubeMX时钟配置
1. STM32时钟基础知识
(1)时钟是什么?
时钟可以简单理解为“心跳”。对于电子元器件来说,时钟就是它的心跳。(STM32)芯片会根据程序给定的时钟节拍来工作。
通常所提到的72M(Hz)、480M(Hz),指的就是STM32芯片的主时钟(系统时钟)频率。STM32芯片就是以这样的时钟频率,在芯片内部做着各种器件间的同步工作。
(2)STM32H743的时钟来源
RCC时钟模块有多种时钟发生器可供选择:
- HSI(高速内部振荡器)时钟
8MHz、16MHz、32MHz或64MHz。
- HSI(高速48MHz内部振荡器)时钟
48MHz。
- HSE(高速外部振荡器)时钟
4MHz到48MHz。
- LSI(低速内部振荡器)时钟
32KHz。
- LSE(低速外部振荡器)时钟
32KHz。
- CSI(低功耗内部振荡器)时钟
4MHz。
STM32H743的时钟相当复杂,但大体上依然分为时钟源和PLL两部分,当然还有其它的选择、分频机制。同时,STM32H743还支持两路可编程时钟输出MCO1/MCO2。
按照时钟源的作用可以分为:
- 系统时钟(主时钟)源
系统时钟SYSCLK可以由4种不同的时钟源驱动:
1)HSI/HSI48振荡器时钟(高速内部时钟)
2)CSI振荡器时钟(低功耗内部时钟)
3)HSE振荡器时钟(高速外部时钟)
4)PLL时钟(锁相环倍频时钟)
- 二级时钟源
1)LSI RC振荡器(低速内部RC振荡器)
2)32.768Hz LSE晶体(低速外部晶体)
按照时钟源的物理来源可以分为:
- 内部时钟源
1)高速内部振荡器(HSI)
2)48MHz RC振荡器(HSI48)
3)低功耗内部振荡器(CSI)
4)低速内部振荡器(LSI)
- 外部时钟源
1)高速外部振荡器(HSE)
支持4MHz到48MHz频率范围内的晶振。
2)低速外部振荡器(LSE)
适用于32KHz晶振的低速外部振荡器。
关于这部分更详细的内容,参见《STM32H743参考手册中文版》的“8.5 RCC时钟模块功能说明”。
(3)STM32H743的时钟树
STM32H743的时钟树如下图所示:
实际上,这个图与上边CubeMX中的“Clock Configuration”中的图是对应的。
由上图即参考手册中的时钟树图可见,STM32H7系列的时钟树相较于STM32F7以及STM32F4系列更为复杂,这是因为高性能必然带来更为复杂的架构。不过对于系统时钟来讲,和之前的系列仍然是一脉相承的。通过STM32Cube中的“Clock Configuration”能够看出,系统时钟的主线架构仍然为下图红色部分中的脉络:
(4)STM32H743系统总线时钟的限制
STM32H743的系统总线时钟仍然会有一些限制,查看《stm32h743数据手册》的“7.3 Operating conditions”中的表122,得到以下说明暨限制:
后边在使用STM32CubeMX进行图形化配置时,再对照参数配置深入讲解这一部分内容。
至此,STM32时钟基础知识的内容就介绍到这里,下一回结合本回内容,通过STM32CubeMX对时钟进行配置。