STM32F103固件库编程(3)—STM32的生命线(时钟树)
复位和时钟控制(RCC)地址:0x4002 1000 - 0x4002 13FF
微控制器允许输出时钟信号到外部MCO引脚(SYSCLK、HSE、HSI、除2的PLL时钟)
(一)系统时钟(SYSCLK):(三个来源)
1.HSE时钟
高速外部时钟信号
2.HSI时钟
HSI时钟信号由内部8MHz的RC振荡器产生,可直接作为系统时钟或在2分频后作为PLL输入。
当HSI被用于作为PLL时钟的输入时,系统时钟能得到的大频率是64MHz。(因为8M经过2分频之后是4M,PLL最大的倍数X16,最后得到64MHz)
3.PLL时钟
PLL的设置(选择HIS振荡器除2或HSE振荡器为PLL的输入时钟,和选择倍频因子)必须在其被激 活前完成。一旦PLL被激活,这些参数就不能被改动
时钟安全系统(CSS)
(二)寄存器
1.时钟控制寄存器(RCC_CR)
2.时钟配置寄存器(RCC_CFGR)
-
位26:24
MCO: 微控制器时钟输出 (Microcontroller clock output) ——(不是很懂)
0xx:没有时钟输出;
100:系统时钟(SYSCLK)输出;
101:内部RC振荡器时钟(HSI)输出;
110:外部振荡器时钟(HSE)输出;
111:PLL时钟2分频后输出。 -
位21:18
PLLMUL:PLL倍频系数 (PLL multiplication factor) -
位17
PLLXTPRE:HSE分频器作为PLL输入 (HSE divider for PLL entry)
由软件置’1’或清’0’来分频HSE后作为PLL输入时钟。只能在关闭PLL时才能写入此位。
0:HSE不分频
1:HSE 2分频 -
位16
由软件置’1’或清’0’来选择PLL输入时钟源。只能在关闭PLL时才能写入此位。
0:HSI振荡器时钟经2分频后作为PLL输入时钟
1:HSE时钟作为PLL输入时钟扫描二维码关注公众号,回复: 10654360 查看本文章 -
位 3:2
SWS[1:0]:系统时钟切换状态 (System clock switch status)
00:HSI作为系统时钟;
01:HSE作为系统时钟;
10:PLL输出作为系统时钟;
11:不可用 -
位1:0
SW[1:0]:系统时钟切换 (System clock switch)
在从停止或待机模式中返回时或直接或间接作为系统时钟的HSE出现故障时,由硬件强制选择 HSI作为系统时钟(如果时钟安全系统已经启动)
3.时钟中断寄存器 (RCC_CIR)
这个分组,0:4—8:12—16:20这三组是对应的
0:4 就绪中断标志 ,位只能读(r)
8:12 就绪中断使能 ,位可读可写(rw)
16:20 清除PLL就绪中断 ,位只能写(w),0无作用,1清除
4.APB2 外设复位寄存器 (RCC_APB2RSTR)
0无作用,1复位
5.APB1 外设复位寄存器 (RCC_APB1RSTR)
6.AHB外设时钟使能寄存器 (RCC_AHBENR)
7.APB2 外设时钟使能寄存器(RCC_APB2ENR)
8.APB1 外设时钟使能寄存器(RCC_APB1ENR)
偏移地址:0x1C
复位值:0x0000 0000
访问:字、半字和字节访问
9.备份域控制寄存器 (RCC_BDCR)
10.控制/状态寄存器 (RCC_CSR)
(三)RCC寄存器地址映像
具体可以查手册,有的直接可以看英文缩写就知道有什么用处。时钟树的图非常重要,看懂可以事半功倍。