PS:仅列出常用或默认的操作,对标野火的STM32F103教学视频整理出的笔记
0x00 时钟的配置过程总结
HSE配置系统时钟->不分频进入锁相环时钟源->倍频因子为9->PLLCLK为72M->给系统时钟->三条总线(AHB 1分频->APB1 二分频,APB2配置一分频)->外设在使用时配置倍频因子
0x01 HSE时钟 (High Speed External Clock signal) 高速外部时钟(4M~16M)一般用8M晶振
特性:计时精准
寄存器:RCC_CR
开启方式:把16位HSEON 置1
就绪位:启振需要一定时间,当第17位HSEREDY为1时,HSE准备好,对应位17
0x02 HSI (High Speed Internal Clock signal)——高速内部时钟(8M)
特性:精度小、受温度影响大,当HSE故障时就用的这个,直到HSE启动成功
寄存器:RCC_CR
开启方式:把0位HSION置1
就绪位:第一位HSIRDY为1,HSI准备好
0x03 锁相环时钟PLLCLK
寄存器:RCC_CFGR
几个常用的位
17位PLLXTPRE | 16位PLLSRC | PLLMUL |
---|---|---|
分频用的 | 设置时钟源是HSE还是HSI | 倍频因子,最大16 |
PLLXTPRE
PLLXTPRE是分频用的
- (常用)0不分频
- 1为2分频
LLSRC
- 0为HSI/2 作为PLL输入时钟
- 1为HSE作为输入时钟(常用)
PLLMUL 倍频因子,最大为16
- 可以选择倍频
- 在这里配置倍频因子为9,将HSE配置到72MHz(8*9=72)
- 如果HSE故障了,HSI的8M直接作为系统时钟
0x04 系统时钟SYSCLK
- 来源 HSI HSE PLLCLK,最大72HMz,一般配置系统时钟等于PLLCLK
- 通过系统时钟切换位(CFGR寄存器) 配置成10为PLL输出作为系统时钟(常用)
- 切换需要时间,SWS位是10说明时钟切换完毕
0x05 AHB预分频器
寄存器:RCC_CFGR HPRE[3:0],常配置为1,意为不分频
- APB1预分频器
- 最高36Mhz,常配置分频因子为2
- APB2预分频器(高速总线)
- 最高72Mhz,常配置分频因子配置1
0x06 CSS时钟安全系统
概述:当HSE故障时,产生CSSI中断
使用过程:
中断时配置HSI为系统时钟,先经过二分频,然后经过PLLSRC,倍频因子选择16,配置系统频率为64M
64M下,某些外设可以正常运作,但最保险的情况就是通知用户/保存数据
默认状态:
当CSSI中断没有被配置的时候,HSI的8M默认作为系统时钟