STM32F103 時鐘系統明晰
本人小白一個,利用課外時間自學STM32。個人感覺,STM32的時鐘系統什麼的,感覺很複雜,對整個時鐘系統的概念都很模糊,只知道該怎麼配置,卻不知道是怎麼來的,所以就花了一天功夫專門上網蒐集了一下資料,整理之後在此用通俗易懂的語言分享出來。如有用詞不當以及總結錯誤的地方,還希望各位大佬指出。博主也好及時進行自我糾正,在此先謝過了。
經常在配置外設時,總會有一句開啟APB1或者APB2下的哪個外設的時鐘,還有什麼AHB時鐘,SYSCLK時鐘,讓人很是很頭疼。下面,你只需要記住這些死知識就夠了:
SYSCLK: 系統時鐘,最大可以達到72MHZ。
HCLK: AHB匯流排時鐘,由SYSCLK分頻得到,一般都是設定為不分頻。
經過時鐘匯流排橋,HCLK又被分為PCLK1和PCLK2,PCLK1對應外設APB1,另一個對應APB2。
APB1最大可達36MHZ,而APB2最大可達72MHZ.這個時候就需要搞清楚開啟外設時鐘怎麼又與APB1、2這兩個扯上關係了?
我覺得就像是上下級之間的關係,AHB通過預分頻,確定PCLK1(APB1)時鐘的頻率,而比如定時器2~7以及其他的外設又是掛載在APB1之下的,就像AHB是大boss,而APB1、2又是部門負責人,最下面就是員工(各種外設)。
最後還想補充一點:定時器部分,APB1、APB2的預分頻如果是來自與AHB的一份頻,(只拿APB1舉例)從APB1到定時器之間的
倍頻器就不起作用了,如果APB1是來自AHB的2以及更多次分頻(2的N次冪),那麼倍頻器就起作用了(但是隻能將分頻後的MHZ*2)。所以這裡還是有點不好理解的。但是小夥伴們有疑惑了,為什麼不直接設定呢?還要拐彎抹角的,讓人理解費勁。
經過百度後,我的出了正確結果:有人會問,既然需要TIM2~7的時鐘頻率=36MHz,為什麼不直接取APB1的預分頻係數=1?答案是:APB1不但要為TIM2~7提供時鐘,而且還要為其它外設提供時鐘;設定這個倍頻器可以在保證其它外設使用較低時鐘頻率時,TIM2~7仍能得到較高的時鐘頻率。
多想想,我覺得好像還有點道理。
好了,對於時鐘系統,我的分享就是這些了。
我是西伯利亞螂,也可以叫我小強。
我曾許下十年,只為最美的遇見。