一。 时钟体系框图解说
1. STM32的5个时钟源
a。高速内部时钟 HSI,大约为8MHz
b。高速外部时钟 HSE,晶振取值范围在4M–16M,一般选用8M晶振
c。低速外部时钟 LSE,32.768k晶振,能够作为RTC的时钟源
d。低速内部时钟 LSI,大约为40KHz
e。PLL锁相环时钟
2. 体系时钟
体系时钟SYSCLK的3个来历
a。HSI
b。HSE
c。PLL
3. RTC的时钟来历
a。LSE
b。LSI
c。LSE的128分频
4. 独立看门狗IWDGCLK的时钟来历
LSI
5.USB的时钟USBCLK的来历
最大频率为48MHz
PLL通过预分频器发生1或1.5分频
6. 内部时钟输出MCO,为STM32芯片的一个引脚PA8
a。SYSCLK
b。HSI
c。HSE
d。PLL时钟的2分频
7. APB1总线的时钟,最大到36M
8. APB2总线的时钟,最大到72M
APB,APB1,APB2为外设供给时钟
一切时钟都有时钟使能,只要时钟翻开时外设才干运用。
关于时钟的装备
见《STM32中文参考手册》
三。体系时钟体系初始化重要函数
SystemInit();
它的作用是初始化体系时钟,把体系时钟初始化到一个默许的状况,该函数在体系启动之后会主动调用。
在startup_stm32f10x_hd.s文件中:
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT __main
IMPORT SystemInit
LDR R0, =SystemInit //先履行SystemInit()函数
BLX R0
LDR R0, =__main //再履行main()函数
BX R0
ENDP
该函数默许界说体系时钟为72MHz
#define SYSCLK_FREQ_72MHz 72000000
初始化后体系的状况:
SYSCLK 72MHz
AHB 72MHz
PCLK1 36MHz
PCLK2 72MHz
PLL 72MHz
四。体系时钟装备调用函数
RCC_HSE_ConfiguraTIon();
留意:在使能任何一个时钟的时分,要等候时钟安稳后才干持续。