1.首先注意的的是圖中畫綠色圈圈的兩個,HSE和HSI分別表示外部時鐘和內(nèi)部時鐘,其中HSE 是是高速外部時鐘,可接石英/陶瓷諧振器,或者接外部時鐘源,HSE 也可以直接做為系統(tǒng)時鐘或者 PLL 輸入(從紅圈4處可以看出),頻率范圍為 4MHz~26MHz。STM32默認為25Mhz,像原子的板子就是8Mhz的,所以移植時一定要格外注意。
2.注意紅圈2代表的部分,這里是主鎖相環(huán)倍頻輸出,用于產(chǎn)生系統(tǒng)需要的高速時鐘信號,如圖綠色箭頭所示(STM32還有一個副鎖相環(huán),如紅圈3)
主 PLL 時鐘的時鐘源要先經(jīng)過一個分頻系數(shù)為 M 的分頻器,然后經(jīng)過倍頻系數(shù)為 N 的倍頻器出來之后的時候還需要經(jīng)過一個分頻系數(shù)為 P(第一個輸出 PLLP)或者 Q(第二個輸出 PLLQ)的分頻器分頻之后,最后才生成最終的主 PLL 時鐘。例如我們的外部晶振選擇 8MHz。同時我們設置相應的分頻器 M=8,倍頻器倍頻系數(shù) N=336,分頻器分頻系數(shù) P=2,那么主 PLL 生成的第一個輸出高速時鐘 PLLP 為:PLL=8MHz * N/ (M*P)=8MHz* 336 /(8*2) = 168MHz(來源:正點原子)
3.區(qū)分APB1和APB2
如紅圈8表示的位置,STM32F4 很多外設的時鐘來源,即兩個總線橋: APB1 和 APB2,其中 APB1是低速總線(最高 42Mhz),APB2 是高速總線(最高 84Mhz)。另外定時器部分,如果所在總線( APB1/APB2)的分頻系數(shù)為 1,那么就不倍頻,如果不為 1(比如 2/4/8/16),那么就會 2 倍頻( Fabpx*2)后,作為定時器時鐘輸入。
簡單點說,舉個APB1的例子,系統(tǒng)時鐘是168Mhz,APB1分頻系數(shù)為4(system_stm32f4xx.c配置),則APB1速度為42Mhz,但是掛靠在在該總線上的定時器3,由于分頻系數(shù)4而不是1,因此定時器輸入頻率為42Mhz x 2 =84 Mhz,具體詳見這篇文章點擊打開鏈接
4.AHB總線頻率
見圖