9. STM32的時(shí)鐘系統(tǒng)
一。 時(shí)鐘系統(tǒng)框圖講解
1. STM32的5個(gè)時(shí)鐘源
a。高速內(nèi)部時(shí)鐘 HSI,大約為8MHz
b。高速外部時(shí)鐘 HSE,晶振取值范圍在4M--16M,一般采用8M晶振
c。低速外部時(shí)鐘 LSE,32.768k晶振,可以作為RTC的時(shí)鐘源
d。低速內(nèi)部時(shí)鐘 LSI,大約為40KHz
e。PLL鎖相環(huán)時(shí)鐘
2. 系統(tǒng)時(shí)鐘
系統(tǒng)時(shí)鐘SYSCLK的3個(gè)來(lái)源
a。HSI
b。HSE
c。PLL
3. RTC的時(shí)鐘來(lái)源
a。LSE
b。LSI
c。LSE的128分頻
4. 獨(dú)立看門狗IWDGCLK的時(shí)鐘來(lái)源
LSI
5.USB的時(shí)鐘USBCLK的來(lái)源
最大頻率為48MHz
PLL經(jīng)過(guò)預(yù)分頻器產(chǎn)生1或1.5分頻
6. 內(nèi)部時(shí)鐘輸出MCO,為STM32芯片的一個(gè)引腳PA8
a。SYSCLK
b。HSI
c。HSE
d。PLL時(shí)鐘的2分頻
7. APB1總線的時(shí)鐘,最大到36M
8. APB2總線的時(shí)鐘,最大到72M
APB,APB1,APB2為外設(shè)提供時(shí)鐘
所有時(shí)鐘都有時(shí)鐘使能,只有時(shí)鐘打開(kāi)時(shí)外設(shè)才能使用。
對(duì)于時(shí)鐘的配置
見(jiàn)《STM32中文參考手冊(cè)》的6.3章節(jié)
二。
三。系統(tǒng)時(shí)鐘系統(tǒng)初始化重要函數(shù)
SystemInit();
它的作用是初始化系統(tǒng)時(shí)鐘,把系統(tǒng)時(shí)鐘初始化到一個(gè)默認(rèn)的狀態(tài),該函數(shù)在系統(tǒng)啟動(dòng)之后會(huì)自動(dòng)調(diào)用。
在startup_stm32f10x_hd.s文件中:
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT __main
IMPORT SystemInit
LDR R0, =SystemInit //先執(zhí)行SystemInit()函數(shù)
BLX R0
LDR R0, =__main //再執(zhí)行main()函數(shù)
BX R0
ENDP
該函數(shù)默認(rèn)定義系統(tǒng)時(shí)鐘為72MHz
#define SYSCLK_FREQ_72MHz 72000000
初始化后系統(tǒng)的狀態(tài):
SYSCLK 72MHz
AHB 72MHz
PCLK1 36MHz
PCLK2 72MHz
PLL 72MHz
四。系統(tǒng)時(shí)鐘配置調(diào)用函數(shù)
RCC_HSE_Configuration();
注意:在使能任何一個(gè)時(shí)鐘的時(shí)候,要等待時(shí)鐘穩(wěn)定后才能繼續(xù)。