STM32F4时钟(二)
其他
2018-08-10 14:06:13
阅读次数: 0
一、综述
这次主要记录自己对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