STM32——时钟系统
总 :STM32——学习总纲
参考资料:
STM32F1系列参考手册_V10(中)
stm32芯片资料STM32F103ZET6(English)
芯片资料STM32F103ZET6(中文版)
STM32F10xxx闪存编程参考手册
一、时钟树
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()
STM32F10xxx闪存编程参考手册
等待周期:
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库函数的参数也就是相应寄存器的控制,不关心具体寄存器地址,关心寄存器控制值。(简化寄存器控制)