# 时钟产生
# 时钟源
HSE/HSI/LSE/LSI
按频率划分:高速时钟源 / 低速时钟源
按来源划分:外部 / 内部时钟源
- 外部时钟源:外部接晶振产生
- 内部时钟源:芯片上电产生
HSE:开发板搭载 8MHz
LSE:32.768KHz 用于 RTC 的时钟源(RTC:RTC(Real Time Clock) 是一种独立的定时器 / 计数器,能够在断电情况下继续运行。它提供了日历时钟、可编程闹钟中断和周期性唤醒标志等功能。)
HSI:内部 RC 振荡产生 16M
LSI:32K 独立看门狗(是一种硬件定时器,用于监测程序执行是否正常,并在系统出现故障或死锁时重启系统)
# PLL
时钟倍频
接受 HSI/HSE,输出 PLLCLK,倍频参数可调
寄存器:
- PLLSRC 选择输入的时钟源(HSE/HSI)
- PLLM 分频系数 6 位 0-63
- PLLMUL 倍频系数 2-16 倍?存疑
# 时钟
# SYSCLK
系统时钟,可以配置为 HSI/HSE/PLLCLK 三者中的一个
# AHB
GPIO, 以太网,DCMI,FSMC,DMA,Cortex 内核的时钟
由 SYSCLK 分频得到
# APB1
由 AHB 分频得到
低速总线时钟,最高 42M
挂载外设:
- 看门狗
- 定时器 2-7
- RTC 时钟
- USART2-5
- SPI2, 3
- I2C1-3
- CAN
- DAC
# APB2
由 AHB 分频得到
高速总线时钟
挂载外设:
- 定时器 1,…
- SPI1
- USART1, 6
- ADC
- SDIO
# 时钟输出 MCO
时钟信号输出,单片机对外输出时钟信号
# RCC
RCC: Reset and Clock Control
- 负责管理微控制器的时钟系统
- 主要功能是提供时钟信号给微控制器内部的各个模块,包括 CPU 和外设
- 管理内部和外部时钟信号的选择与分配
- 使用外设之前需要使能相应时钟
# 系统时钟配置
结合框图,在 CubeMX 中配置比较方便
todo
# 外设时钟配置
CubeMX:配置外设时自动完成
HAL 库中也比较简单:
通过调用宏定义即可(STM32F4xx_hal_rcc.h),如__HAL_RCC_GPIOA_CLK_ENABLE ();
使能(enable)的同时,也可以禁用(disable)