RCC :reset clock control 复位和时钟控制器。
1 HSE 高速外部时钟信号(由晶振模块产生)
HSE 是高速的外部时钟信号,
可以由有源晶振或者无源晶振提供,频率从
4-16MHZ
不
等。当使用有源晶振时,时钟从
OSC_IN
引脚进入,
OSC_OUT
引脚悬空,当选用无源晶振
时,时钟从
OSC_IN
和
OSC_OUT
进入,并且要配谐振电容。
2 PLL 时钟源
PLL
时钟来源可以有两个,一个来自
HSE
,另外一个是
HSI/2
,具体用哪个由时钟配置寄存器 CFGR
的位
16
:
PLLSRC
设置。
HSI 是内部高速的时钟信号,频率为 8M
,根据温度和环境的情况频率会有漂移,一般不作为 PLL
的时钟来源。这里我们选
HSE作为 PLL的时钟来源
.
3 PLL 时钟 PLLCLK
通过设置
PLL
的倍频因子,可以对
PLL
的时钟来源进行
倍频
,倍频因子可以是:[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
,具体设置成多少,由时钟配置寄存器
CFGR
的位
21-18
:
PLLMUL[3:0]
设置。我们这里设置为
9
倍频,因为上一步我们设置
PLL
的时钟来源
为
HSE=8M
,所以经过
PLL
倍频之后的
PLL
时钟:
PLLCLK = 8M *9 = 72M
。
当确定
PLL
时钟来源的时候,
HSE
可以
不分频
或者 2
分频,这个由时钟配置寄存器
CFGR
的位
17
:
PLLXTPRE
设置,我们设置为
HSE
不分频.
4 系统时钟 SYSCLK
系统时钟来源可以是:HSI、PLLCLK、HSE
,具体的时钟配置寄存器
CFGR
的位
1-0:SW[1:0]设置。一般设置系统时钟:
SYSCLK = PLLCLK = 72M
。
5 AHB 总线时钟 HCLK
系统时钟
SYSCLK
经过
AHB
预分频器分频之后得到时钟叫
APB
总线时钟,即
HCLK
,
分频因子可以是
:[1,2,4
,
8
,
16
,
64
,
128
,
256
,
512]
,具体的由时钟配置寄存器
CFGR
的位
7-4
:HPRE[3:0]设置。一般
设置为 1
分频,即
HCLK=SYSCLK=72M。
6 APB2 总线时钟 HCLK2
APB2
总线时钟
PCLK2
由
HCLK经过高速 APB2预分频器
得到,分频因子可以是
:[1,2,4
,
8
,
16]
,具体由时钟配置寄存器
CFGR
的位
13-11
:
PPRE2[2:0]
决定。
HCLK2
属于高速的总
线时钟,片上高速的外设就挂载到这条总线上,比如全部的
GPIO
、
USART1
、
SPI1
等。
一般设置为 1 分频,即
PCLK2 = HCLK = 72M。
7 APB1 总线时钟 HCLK1
APB1
总线时钟
PCLK1
由 HCLK 经过低速 APB 预分频器得到
,分频因子可以是
:[1,2,4
,
8
,
16]
,具体的由时钟配置寄存器
CFGR
的位
10-8
:
PRRE1[2:0]
决定。
HCLK1
属于低速的总线时钟,最高为
36M
,
片上低速的外设
就挂载到这条总线上,比如
USART2/3/4/5
、
SPI2/3
,
I2C1/2等。
设置为 2 分频,即 PCLK1 = HCLK/2 = 36M。
8 USB 时钟
USB
时钟是由
PLLCLK 经过 USB 预分频器得到
,分频因子可以是:
[1,1.5]
,具体的由
时钟配置寄存器
CFGR
的位
22
:
USBPRE
配置。
USB
的时钟最高是
48M。
9 Cortex 系统时钟
Cortex
系统时钟由
HCLK(AHB总线时钟) 8
分频得到,等于
9M
,
Cortex
系统时钟用来
驱动内核的系统定时器 SysTick
,
SysTick
一般用于操作系统的时钟节拍,也可以用做普通的定时。
10 ADC 时钟
ADC
时钟由
PCLK2经过 ADC预分频器
得到,分频因子可以是
[2,4,6,8]
,具体的由时钟
配置寄存器
CFGR
的位
15-14
:ADCPRE[1:0]决定。ADC时钟最高只能是 14M。
鉴于
PCLK2
最高是
72M
,所以只能取28M 和
56M。
11 RTC 时钟、独立看门狗时钟
RTC 时钟可由 HSE/128 分频得到
,也可由低速外部时钟信号
LSE
提供,频率为
32.768KHZ
,也可由低速内部时钟信号
HSI
提供,具体选用哪个时钟由备份域控制寄存器
BDCR
的位
9-8
:
RTCSEL[1:0]
配置。
独立看门狗的时钟由LSI提供
,且只能是由
LSI
提供, LSI 是低速的内部时钟信号,频率为
30~60KHZ
直接不等,一般取
40KHZ
。
12 MCO 时钟输出
MCO
是
microcontroller clock output
的缩写&#