时钟控制器原理

时钟源

时钟源分为:RC振荡器,晶体振荡器。

RC振荡器起振速度比晶体振荡器起振速度快,成本低,但精度不高,两者都是先慢慢起振,再达到相应的频率。

晶体振荡器分为两种:无源晶体振荡器,需要接两个引脚,借助时钟电路才能产生震荡信号,自身没有办法震荡

有源晶体振荡器,需要外部供电才能起振,并且只需要接一个引脚OSC_IN.

基础时钟源

STM32F407有4个输入时钟源:

内部时钟源(封装到芯片内部的):HSI 内部高速时钟源(主要就是给CPU核心去提供)

LSI 内部低俗时钟源(主要是给内部的看门狗,给RTC实时时钟去使用)

外部时钟源(通过引脚输入进去):HSE 外部高速时钟源

LSE 外部低俗时钟源

HSI时钟

由内部16MHz RC振荡器生成的,可以直接用作系统时钟或者用作PLL输入。 PLL(给时钟内部的锁相环做这个分频倍频处理之后,再去给系统使用)

HSE时钟

高速外部时钟信号可以支持两种时钟源,由有源晶振和无源晶振提供,频率范围4~26MHz(一般是8MHz和12MHz),它也可以直接用作系统时钟,或者PLL输入

LSI时钟

由RC振荡器生成的,可作为低功耗时钟源在停机和待机模式下保持运行,供独立看门狗(IWDG,主要就是保证程序在异常情况下,能够自动的复位CPU)和RTC使用。频率为32kHz.

LSE时钟

是32.768kHz低速外部晶振或陶瓷谐振器。可作为实时时钟(RTC)的时钟源来提供时钟或日历或其他定时功能,具有功耗低且精度高的优点。

系统时钟源

PLL时钟

内部PLL基于HSI(内部高速时钟)或HSE(外部高速时钟)输入的时钟频率进行倍频,从而得到系统时钟SYSCLK。使用PLLM,PLLP,PLLQ可编程分频因子以及PLLN倍频因子,可调整PLLCLK输出的时钟频率。

SYSCLK时钟

SYSCLK就是系统时钟,它可以通过System ClockMux选择器来选择输入的源时钟,有HSI(内部高速时钟),HSE(外部高速时钟),PLLCLK三种输入源。

HCLK时钟

将系统时钟经过AHB Prescaler分频器 分频后就得到了HCLK时钟,HCLK时钟为AHB总线提供的时钟信号,最大频率168MHz主要用于高速外设,可以为DMA,Cortex System Timer,FCLK,APB1,APB2提供时钟输入。系统时钟经过分频器 分频后,它就会产生各种各样的时钟域了。时钟域就是给我们这个芯片内部的一些外设控制器去提供对应的这个时钟输入。

外设时钟

APB总线时钟

STM32F407 APB总线时钟分为APB1和APB2时钟,是由HCLK时钟提供时钟输入。再经过APB Prescaler分频后得到APB外设时钟。

外设控制器时钟

STM32F407外设控制器时钟主要通过AHB总线时钟,APB1总线时钟,APB2总线时钟来提供时钟输入。AHB总线时钟一般都是一些高速的外设,比如DMA,网卡。都是挂载到AHB总线上。每条总线都可以挂载多个外设控制器。

RTC时钟

RTC时钟输入源可以由LSE(外部低速),LSI(内部低速),或者HSE(外部高速)经过分频后提供,IWDG(独立看门狗)输入时钟相对简单,只有LSI(外部低速)时钟

RTC Clock Mux选择器可以选择由LSE(外部低速),LSI(内部低速)时钟直接为RTC提供输入时钟,还是由HSE(外部高速)经过分频后作为RTC的输入时钟。

时钟输入

MCO时钟输出功能

MCO是微控制器时钟输出引脚,主要作用是可以对外提供时钟,相当于一个有源晶振。再STM32F407中由MCO1(PA8)和MCO2(PC9)两个引脚。

相关推荐
望眼欲穿的程序猿2 小时前
按键控制 LED
嵌入式硬件·rust
天天爱吃肉82182 小时前
豆包 vs DeepSeek API 对比分析报告
android·java·大数据·开发语言·功能测试·嵌入式硬件·汽车
我命由我123453 小时前
RFID 技术极简理解
java·c语言·c++·嵌入式硬件·物联网·visualstudio·java-ee
QK_004 小时前
主流嵌入式MCU GUI框架完整介绍
单片机·嵌入式硬件
国产电子元器件4 小时前
2026年电流传感器选型指南:开环霍尔、闭环霍尔、TMR如何选择?
单片机·嵌入式硬件
飞霄不推销5 小时前
ROS2--Tiwst数据类型转换到帧类型发给STM32
stm32·单片机·嵌入式硬件
阿泽·黑核5 小时前
06 keyflow 多平台移植指南:STM32/51/ESP32/Linux
linux·stm32·嵌入式硬件
AI+程序员在路上5 小时前
CSP、PP、PV、HM 在 CiA402 标准下的差异解析
linux·c语言·开发语言·嵌入式硬件