时钟

概述

A device that generate perodic signals for timing.

时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令。 时钟系统就是 CPU 的脉搏,决定 cpu 速率,像人的心跳一样 只有有了心跳,人才能做其他的事情,而单片机有了时钟,才能够运行执行指令,才能够做其他的处理 (点灯,串口,ADC),时钟的重要性不言而喻。

描述时钟有两个符号:

T 时钟周期 ,表示时钟信号一个高电平和一个低电平总共所需要的时长(单位 s)

f 时钟频率,表示单位时间内可以产生多少个 时钟周期信号(振动次数)

T\times f=1

时钟的作用

利用时序逻辑电路,增加时钟信号来实现电路的同步工作,可以降低电路中的差错信号(毛刺)

一个解决方案:

可以约定在下降沿信号改变,在上升沿取得输出电平,则若占空比为 60%,则 $0.4T>\Delta t(差错时间)$

PixPin_2024-09-16_15-26-21

为什么 STM32 要有多个时钟源呢?

STM32 本身十分复杂,外设非常多 但我们实际使用的时候只会用到有限的几个外设,使用任何外设都需要时钟才能启动,但并不是所有的外设都需要系统时钟那么高的频率,为了兼容不同速度的设备,有些高速,有些低速,如果都用高速时钟,势必造成浪费 并且,同一个电路,时钟越快功耗越快,同时抗电磁干扰能力也就越弱,所以较为复杂的 MCU 都是采用多时钟源的方法来解决这些问题。所以便有了 STM32 的时钟系统和时钟树。

总括:

  • STM32 时钟系统主要的目的就是给相对独立的外设模块提供时钟,也是为了降低整个芯片的耗能。
  • 系统时钟,是处理器运行时间基准 (每一条机器指令一个时钟周期)
  • 时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令。
  • 一个单片机内提供多个不同的系统时钟,可以适应更多的应用场合。
  • 不同的功能模块会有不同的时钟上限,因此提供不同的时钟,也能在一个单片机内放置更多的功能模块。
  • 对不同模块的时钟增加开启和关闭功能,可以降低单片机的功耗
  • STM32 为了低功耗,他将所有的外设时钟都设置为 disable(不使能) ,用到什么外设,只要打开对应外设的时钟就可以, 其他的没用到的可以还是 disable(不使能),这样耗能就会减少。 这就是为什么不管你配置什么功能都需要先打开对应的时钟的原因

时钟信号的产生 ZH CN

  • 振荡器

    速度太慢

  • 晶振

    • 有源
    • 无源

STM32F4xx 时钟树(时钟系统)

  • LSI :Low Speed Internal 内部低速时钟
  • LSE:Low Speed External 外部低速时钟
  • HSI :High Speed Internal 内部高速时钟
  • HSE:High Speed External 外部高速时钟

本开发板上,

HSE_VALUE = 8M

PLLCLK = \frac{HSEVALUE\times N}{M \times P}

主频最高可达 168MHz

AHB BUS clock = \frac{PLLCLK}{AHBprescaler} AHBprescaler AHB 总线的预分频

APBx = \frac{AHBclock}{APBx prescaler} APBx prescaler APBx 总线的预分频

  • APB1 : 低速外设总线,最高达 42M(预分频为 4)
  • APB2 : 高速外设总线,最高达 84M(预分配为 2)

image

  • 待分类

    用户发帖时如果不填标签,则默认加上“待分类”。这样做是为了减少用户发帖的负担,同时也减少运营维护的工作量。具有帖子更新权限的用户可以帮助社区进行帖子整理,让大家可以更方便地找到所需内容。这里是关于这样设计的一些思考,欢迎讨论。

    1 引用 • -280 回帖 • 4 关注

相关帖子

回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...