STM32——时钟系统
本文介绍了STM32时钟系统的学习框架,重点解析了STM32F1系列的时钟树配置。内容涵盖:1)时钟源分类(外部/内部高低速晶振);2)总线架构(AHB/APB);3)HAL库时钟配置函数(HAL_RCC_OscConfig等);4)系统时钟初始化流程;5)外设时钟管理方法;6)使用STM32CubeMX配置时钟的实践要点。特别强调了FLASH时钟与系统时钟的关系,以及在72MHz主频下FLASH
·
总 :STM32——学习总纲
参考资料:
stm32芯片资料STM32F103ZET6(English)
一、时钟树
1.1 什么是时钟(单片机)



1.2 时钟树(F1)
其他系列看B站视频。
1.2.1 振荡器

RC:RC振荡器

1.2.2 时钟树简图


1.2.3 参考手册分析

外部高速晶振(High speed External)
,
外部低速晶振(Low speed External)
,
内部高速晶振(High speed Internal),内部低速晶振(Low speed Internal)


1.2.4 芯片手册总线

AHB、APB1、APB2

1.2.5 配置时钟树 HAL 库函数
| 时钟源、锁相环 | HAL_RCC_OscConfig() | ![]() |
| 系统时钟、总线 | HAL_RCC_ClockConfig() | ![]() |
| 使能外设时钟 | __HAL_RCC_PPP_CLK_ENABLE() | 为了低功耗,默认不使能外设时钟。 |
| 拓展外设时钟(RTC/ADC/USB) | HAL_RCCEx_PeriphCLKConfig() | 外设时钟配置,不同系列外设配置不同 |
(F4,F7,H7)具体配置看参考手册和芯片手册具体总线时钟配置
1.2.6 STM32CubeMX 时钟树配置页面

二、配置系统时钟(F1)
2.1 系统时钟配置步骤简图

H7系列才在sys_stm32_clock_init()中有第5步。
2.2 外设时钟使能和失能
![]()


2.3 sys_stm32_clock_init()
一般靠以下两个HAL库函数实现
2.3.1 HAL_RCC_OscConfig()

即 控制寄存器。
参考手册中的RCC寄存器描述

例如HSI校准:

2.3.2 HAL_RCC_ClockConfig()

等待周期:
F1系统时钟72MHz,FLASH时钟来源于系统时钟(FLASH最大24M)

2.4 工程代码配置系统时钟
2.4.1 配置 HSE_VALUE 值

2.4.2 调用 SystemInit 函数
在启动文件中调用。

不想调用就屏蔽

具体定义
:

2.4.3 sys_stm32_clock_init()函数定义与 HAL库函数调用


具体配置参数是在时钟树配置时的选择值。
HAL库函数的参数也就是相应寄存器的控制,不关心具体寄存器地址,关心寄存器控制值。(简化寄存器控制)


更多推荐





所有评论(0)