一、综述
这次主要记录自己对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