# 时钟产生

# 时钟源

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)