STM32F4时钟(二)

一、综述

这次主要记录自己对RCC寄存器的笔记。

RCC 时钟控制寄存器 即 Reset and clock control

大概算了算,大约有30多个RCC相关的寄存器。包含了从F42,F405等等。下面一个个讲解。

二、RCC_CR

RCC_CR全称 RCC clock control register RCC时钟控制寄存器,既然是时钟控制寄存器当然是用来控制时钟的。这是一个32位的寄存器。

  • 0 HSION HSI(Interna highspeed clock enable)内部高速时钟使能 1为打开 0为关闭 如果此位作为了系统时钟,则此位不能清零。
  • 1 HSIRDY 内部高速时钟就绪标志 Internal high-speed clock ready flag 1 就绪 0 未就绪
  • 16 HSEOON 时钟使能 外部高速时钟 HSE clocl enable HSE 使能 1振荡器打开,0振荡器关闭
  • 17 HSERDY HSE 时钟就绪标志 (HSE clock ready flag) 1就绪 0 未就绪
  • 24 PLLON 主 PLL (PLL) 使能 (Main PLL (PLL) enable) 1打开 0 关闭
  • 25 PLLRDY:主 PLL (PLL) 时钟就绪标志 (Main PLL (PLL) clock ready flag)
  • 26 PLLI2SON: PLLI2S 使能 (PLLI2S enable)
  • 27 PLLI2SRDY: PLLI2S 时钟就绪标志 (PLLI2S clock ready flag)

三、RCC_PLLCFGR

配置寄存器 (RCC_PLLCFGR) 公式那么一放,我就不管了此寄存器用于根据公式配置 PLL 时钟输出:

  • f(VCO 时钟) = f(PLL 时钟输入) × (PLLN / PLLM)
  • f(PLL 常规时钟输出) = f(VCO 时钟) / PLLP
  • f(USB OTG FS, SDIO, RNG 时钟输出) = f(VCO 时钟) / PLLQ
  • PLLQ 4位 PLLQ: 主 PLL (PLL) 分频系数,适用于 USB OTG FS、 SDIO 和随机数发生器时钟 (Main
    PLL (PLL) division factor for USB OTG FS, SDIO and random number generator clocks)
    由软件置 1 或清零,用于控制 USB OTG FS 时钟、随机数发生器时钟和 SDIO 时钟的频
    率。这些位应仅在 PLL 已禁止时写入。
    小心: 为使 USB OTG FS 能够正常工作,需要 48 MHz 的时钟。对于 SDIO 和随即数生成
    器,频率需要低于或等于 48 MHz 才可正常工作。
    USB OTG FS 时钟频率 = VCO 频率 / PLLQ,并且 2<=PLLQ <=15
    0000: PLLQ = 0,错误配置
    0001: PLLQ = 1,错误配置
    0010: PLLQ = 2
    0011: PLLQ = 3
    0100: PLLQ = 4

    1111: PLLQ = 15
  • PLLSRC: 主 PLL(PLL) 和音频 PLL (PLLI2S) 输入时钟源 (Main PLL(PLL) and audio PLL
    (PLLI2S) entry clock source)
    由软件置 1 和清零,用于选择 PLL 和 PLLI2S 时钟源。此位只有在 PLL 和 PLLI2S 已禁止时
    才可写入。
    0:选择 HSI 时钟作为 PLL 和 PLLI2S 时钟输入
    1:选择 HSE 振荡器时钟作为 PLL 和 PLLI2S 时钟输入
  • PLLP: 适用于主系统时钟的主 PLL (PLL) 分频系数 (Main PLL (PLL) division factor for main
    system clock)
    由软件置 1 和清零,用于控制常规 PLL 输出时钟的频率。这些位只能在 PLL 已禁止时写入。
    小心: 软件必须正确设置这些位,使其在此域中不超过 168 MHz。
    PLL 输出时钟频率 = VCO 频率 / PLLP 并且 PLLP = 2、 4、 6 或 8
    00: PLLP = 2
    01: PLLP = 4
    10: PLLP = 6
    11: PLLP = 8
  • PLLN:9w位 适用于 VCO 的主 PLL (PLL) 倍频系数 (Main PLL (PLL) multiplication factor for VCO)
    由软件置 1 和清零,用于控制 VCO 的倍频系数。这些位只能在 PLL 已禁止时写入。写入这
    些位时只允许使用半字和字访问。
    小心: 软件必须正确设置这些位,确保 VCO 输出频率介于 192 和 432 MHz 之间。
    VCO 输出频率 = VCO 输入频率 × PLLN 并且 192  PLLN  432
    000000000: PLLN = 0,错误配置
    000000001: PLLN = 1,错误配置

    011000000: PLLN = 192

    110110000: PLLN = 432
    110110001: PLLN = 433,错误配置

    111111111: PLLN = 511,错误配置
  • PLLM:6位分频系数 主 PLL (PLL) 和音频 PLL (PLLI2S) 输入时钟的分频系数 (Division factor for the main
    PLL (PLL) and audio PLL (PLLI2S) input clock)
    由软件置 1 和清零,用于在 VCO 之前对 PLL 和 PLLI2S 输入时钟进行分频。这些位只有在
    PLL 和 PLLI2S 已禁止时才可写入。
    小心: 软件必须正确设置这些位,确保 VCO 输入频率介于 1 和 2 MHz 之间。建议选择
    2 MHz 的频率,以便限制 PLL 抖动。
    VCO 输入频率 = PLL 输入时钟频率 / PLLM 并且 2  PLLM  63
    000000: PLLM = 0,错误配置
    000001: PLLM = 1,错误配置
    000010: PLLM = 2
    000011: PLLM = 3
    000100: PLLM = 4

    111110: PLLM = 62
    111111: PLLM = 63

四、RCC_AHB

AHB1 外设时钟使能寄存器,这个寄存器是我接触的最多的,也是最常用的一个寄存器,直接口述了。从0-8这9位,依次是,A\B\C\D\E\F\G\H\I 这些IO口使能的寄存位。12位是CRC(看了下介绍,感觉自己任重而道远!)使能。后面还有OTG和以太网的时钟。

AHB2 外设时钟感觉是1没有放完的部分。我现在只能看得懂一个RNGEN(散列模块时钟使能 (Hash modules clock enable))

五、后面还有一堆

外设时钟还有低功耗时候的,总之可怕的一批。先说这些吧!然后下一篇就开始去搞时钟配置的代码喽!加油,时间有点少,要学习的和做的又有点多,加油!

猜你喜欢

转载自blog.csdn.net/qq_27865227/article/details/79114280