STM32F4xx時鐘理解

理解STM32的時鐘是我們應用定時器等等的基礎,根據最近的工作總結一下:

下面是STM32的時鐘樹:



1.首先注意的的是圖中畫綠色圈圈的兩個,HSE和HSI分別表示外部時鐘和內部時鐘,其中HSE 是是高速外部時鐘,可接石英/陶瓷諧振器,或者接外部時鐘源,HSE 也可以直接做爲系統時鐘或者 PLL 輸入(從紅圈4處可以看出),頻率範圍爲 4MHz~26MHz。STM32默認爲25Mhz,像原子的板子就是8Mhz的,所以移植時一定要格外注意。

2.注意紅圈2代表的部分,這裏是主鎖相環倍頻輸出,用於產生系統需要的高速時鐘信號,如圖綠色箭頭所示(STM32還有一個副鎖相環,如紅圈3

主 PLL 時鐘的時鐘源要先經過一個分頻係數爲 M 的分頻器,然後經過倍頻係數爲 N 的倍頻器出來之後的時候還需要經過一個分頻係數爲 P(第一個輸出 PLLP)或者 Q(第二個輸出 PLLQ)的分頻器分頻之後,最後才生成最終的主 PLL 時鐘。例如我們的外部晶振選擇 8MHz。同時我們設置相應的分頻器 M=8,倍頻器倍頻係數 N=336,分頻器分頻係數 P=2,那麼主 PLL 生成的第一個輸出高速時鐘 PLLP 爲:PLL=8MHz * N/ (M*P)=8MHz* 336 /(8*2) = 168MHz(來源:正點原子)

3.區分APB1和APB2
紅圈8表示的位置,STM32F4 很多外設的時鐘來源,即兩個總線橋: APB1 和 APB2,其中 APB1是低速總線(最高 42Mhz),APB2 是高速總線(最高 84Mhz)。另外定時器部分,如果所在總線( APB1/APB2)的分頻係數爲 1,那麼就不倍頻,如果不爲 1(比如 2/4/8/16),那麼就會 2 倍頻( Fabpx*2)後,作爲定時器時鐘輸入。
   簡單點說,舉個APB1的例子,系統時鐘是168Mhz,APB1分頻係數爲4(system_stm32f4xx.c配置),則APB1速度爲42Mhz,但是掛靠在在該總線上的定時器,由於分頻係數4而不是1,因此定時器輸入頻率爲42Mhz x 2 =84 Mhz

這裏這個人講的挺好的http://www.cnblogs.com/zyqgold/archive/2013/05/31/tim.html,但是定時器頻率算錯了,具體看評論,有人給他改過來了。

這篇文章也很好;http://blog.sina.com.cn/s/blog_7142d7da01014zwz.html



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章