在stm32 時鐘系統中,有5 個重要的時鐘源,分別是lsi、lse、hsi、hse、pll。按照時鐘頻率分可分為高速時鐘源和低速時鐘源,在這5 個中hsi,hse 以及pll 屬於高速時鐘,lsi 和lse 屬於低速時鐘。按照時鐘**可分為外部時鐘源和內部時鐘源,外部時鐘源就是在stm32 晶振管腳處接入外部晶振的方式獲取時鐘源,其中hse 和lse 是外部時鐘源,其他的是內部時鐘源。
按照上圖中數字順序來介紹。
stm32的5 個時鐘源,如何給其他外設和系統提供時鐘的呢?
(a)mco 是stm32 的乙個時鐘輸出io(pa8),它可以選擇乙個時鐘訊號輸出,可以選擇為pll 輸出的2 分頻、hsi、hse 或者系統時鐘。這個時鐘可以用來給外部其他系統提供時鐘源。
(b)rtc 時鐘。從圖中線的流向可知,rtc 時鐘**可以是內部低速的lsi時鐘,外部低速lse 時鐘(32.768k),還可以通過hse 128 分頻後得到。(c)usb 時鐘。stm32 中有乙個全速功能的usb 模組,其序列介面引擎需要乙個頻率為48mhz 的時鐘源,該時鐘源只能從pll 輸出端獲取,可以選擇為1.5 分頻或者1 分頻,也就是當需要使用usb 模組時,pll 必須使能,並且pllclk 時鐘頻率配置為48mhz 或72mhz。
(d)sysclk 系統時鐘。它是stm32 中絕大部分部件工作的時鐘源。它的時鐘**可以由hsi、hse、pllclk 提供,相信大家選擇stm32f1 這種高階晶元,都希望有乙個比較大的時鐘頻率,因此選擇pllclk 作為系統時鐘。pllclk 又是從hse 或hsi 經過pll 倍頻得到。
(e)其他所有外設。從時鐘圖上可以看出,其他所有外設的時鐘最終**都是sysclk。sysclk 通過ahb 分頻器分頻後送給各模組使用。這些模組包括:
①、ahb 匯流排、核心、記憶體和dma 使用的hclk 時鐘。
②、通過8 分頻後送給cortex 系統定時器時鐘,即systick。
③、直接送給cortex 的空閒執行時鐘fclk。
④、送給apb1 分頻器。apb1 分頻器輸出一路供apb1 外設使用(pclk1,
最大頻率36mhz),另一路送給定時器(timer)1、2 倍頻使用。
⑤、送給apb2 分頻器。apb2 分頻器分頻輸出一路供apb2 外設使用
(pclk2,最大頻率72mhz),另一路送給定時器(timer)1 倍頻器使用。
⑥、送給adc 分頻器。adc 分頻器經過2、4、6、8 分頻後送給adc1/2/3 使
用,adc 最大頻率為14m。
⑦、二分頻後送給sdio 使用。
apb1 和apb2 的區別,apb1 上面連線的是低速外設,包括電源介面、備份介面、can、usb、i2c1、i2c2、uart2、uart3 等, apb2上面連線的是高速外設包括uart1、spi1、timer1、adc1、adc2、gpio 等。大多數有關時鐘輸出部分都有乙個使能控制,比如ahb 匯流排、apb1 外設、apb2 外設、核心時鐘等。當需要使用某個時鐘的時候一定要開啟它的使能,否則將不工作。
systeminit 函式執行完,時鐘大小設定如下:
sysclk(系統時鐘) =72mhz
ahb 匯流排時鐘(hclk=sysclk) =72mhz
apb1 匯流排時鐘(pclk1=sysclk/2) =36mhz
apb2 匯流排時鐘(pclk2=sysclk/1) =72mhz
pll 主時鐘=72mhz
STM32時鐘系統
下面我們根據這張圖說說有關stm32時鐘系統的那些事 io uint32 t cr hsi,hse,css,pll等的使能和就緒標誌位 io uint32 t cfgr pll等的時鐘源選擇,分頻係數設定 io uint32 t ahbenr dma,sdio等時鐘使能 io uint32 t ap...
stm32 時鐘系統
1.stm32有5個時鐘源 hsi hse lsi lse pll 1 hsi是高速內部時鐘,rc振盪器,頻率為8mhz,精度不高 2 hse是高速外部時鐘,可接石英或陶瓷諧振器,或者接外部時鐘源,頻率範圍4mhz 16mhz 3 lsi是低速內部時鐘,rc振盪器,頻率為40mhz,提供低功耗時鐘。...
STM32時鐘系統
1.stm32 有5 個時鐘源 hsi hse lsi lse pll hsi 是高速內部時鐘,rc振盪器,頻率為 8mhz 精度不高。hse 是高速外部時鐘,可接石英 陶瓷諧振器,或者接外部時鐘源,頻率範圍為4mhz 16mhz。lsi是低速內部時鐘,rc振盪器,頻率為 40khz 提供低功耗時鐘...