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