前言:一般来说单片机程序的第一步就是时钟配置。时钟配置我们需要知道以下几点:
1. 系统时钟的时钟源用哪个。
2. 系统时钟频率要多少。
3. 每个模块的时钟频率要多少。
4. 如果外部时钟出了问题,这个时候时钟是怎么运行的。
知识点:
1. 系统复位后,HSI振荡器被选为系统时钟。当时钟源被直接或通过PLL间接作为系统时钟时,它将不能被停止。
2. STM32F103的三个可以作为系统时钟的时钟源,分别是HSI、HSE、PLL。而PLL的时钟源是HSI/2(内部RC振荡器二分频)、HSE。
3.如果使用HSI,系统时钟我们能达到的最大频率是64MHz,如果使用HSE,系统时钟最大频率是72MHz。
4.APB时钟有低速PCLK1和高速PCLK2;PCLK1是从HCLK二分频得到的,最大36MHZ,根据上一条知识点如果是使用HSI,则最快是32MHz。
5. PLL的设定需要在使能之前,一旦PLL使能后参数不可更改。
6.附录是一些缩写的英文全称,也有一些补充的知识点。
附录:一些缩写的英文全称及中文翻译,帮助理解记忆。
IWDG IndependentWatchdog 独立看门狗
RTC RealTime Clock 实时时钟
时钟源可以是LSI,或者LSE,再或者HSE的128分频。
LSI LowSpeed Internal 内部低速时钟
RC振荡器,频率为40kHz。供IWDG使用,还能作为RTC的时钟源。
HSI HighSpeed Internal 内部高速时钟
RC振荡器,频率为8MHz。
HSE HighSpeed External 外部高速时钟
可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。
PLL PhaseLockedLoop 锁相环倍频输出
其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,
SYSCLK SystemColock 系统时
AHB AdvancedHigh performance Bus 高级高性能总线
AHB主要用于高性能模块(如CPU、DMA和DSP等)之间的连接。
APB Advanced PeripheralBus 高级外围设备总线
APB主要用于外设模块(如ADC、USB、SPI、UART等)与AHB之间的连接。
HCLK Advanced High performance Bus Clock 高级高性能总线时钟
就是SYSCLK经过AHBPrescaler(预分频器)后得到的AHB的时钟
PCLK PeripheralBus Clock 外围设备总线时钟
PCLK有两个,一个是低速的PCLK1,另一个是高速的PCLK2。
PCLK1是经过APB1Prescaler后得到的APB1时钟。
PCLK2是经过APB2 Prescaler后得到的APB2时钟。
FCLK FreeRuning Clock 自由运行时钟
为供给CPU内核的时钟信号,CPU的主频就是指这个信号;1/FCLK就是CPU时钟周期。
为什么叫自由运行时钟呢?下面是别人家的讲解。
ARMJISHU注:FCLK 为处理器的自由振荡的处理器时钟,用来采样中断和为调试模块计时。在处理器休眠时,通过FCLK 保证可以采样到中断和跟踪休眠事件。 Cortex-M3内核的“自由运行时钟(free running clock)”FCLK。“自由”表现在它不来自系统时钟HCLK,因此在系统时钟停止时FCLK也继续运行。FCLK和HCLK 互相同步。FCLK 是一个自由振荡的HCLK。FCLK 和HCLK 应该互相平衡,保证进入Cortex-M3 时的延迟相同。