3.1STM32F10xx时钟系统框图
时钟系统相关知识:
1. STM32有5个时钟源:HSI、HSE、LSI、LSE、PLL:
①HSI是高速内部时钟,RC振荡器,频率为8MHz,精度不高。
②HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。
③LSI是低速内部时钟,RC振荡器,频率为40KHz,提供低功耗时钟,可作独立看门狗时钟。
④LSE是低速外部时钟,接频率为32.768KHz的石英晶体。
⑤PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2,HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。
2. 系统时钟SYSCLK可来源于三个时钟源:
①HSI振荡器时钟
②HSE振荡器时钟
③PLL时钟
3. STM32可以选择一个时钟信号输出到MCO脚(PA8)上,可以选择为PLL输出的2分频、HSI、HSE、或者系统时钟。
4. 任何一个外设在使用前,必须首先使能其相应的时钟。 几个重要的时钟:
5. 几个重要时钟:
①SYSCLK(系统时钟)
②AHB总线时钟
③APB1总线时钟(低速):速度最高36MHz
④APB2总线时钟(高速):速度最高72MHz
⑤PLL时钟
3.2SystemInit函数
使用V3.5版本的库函数,在系统启动启动之后会自动调用系统初始化函数SystemInit();
初始化之前首先通过宏定义定义系统系统时钟频率:
#define SYSCLK_FREQ_72MHz 72000000
初始化之后的状态:
SYSCLK 72MHz
AHB 72MHz
PCLK1 36MHz
PCLK2 72MHz
PLL 72MHz
初始化之后可以通过变量SystemCoreClock获取系统变量。如果SYSCLK 72MHz,那么变量SystemCoreClock=72000000。