01 前言
在嵌入式系統(tǒng)中時鐘是其脈搏,處理器內(nèi)核在時鐘驅(qū)動下完成指令執(zhí)行,狀態(tài)變換等動作。外設(shè)部件在時鐘的驅(qū)動下完成各種工作,比如串口數(shù)據(jù)的發(fā)送、A/D轉(zhuǎn)換、定時器計數(shù)等等。
02 STM32時鐘源
◆ HSI是高速內(nèi)部時鐘,RC振蕩器,頻率為8MHz。
◆ HSE是高速外部時鐘,可接石英/陶瓷諧振器,或者接外部時鐘源,比較常用的8MHz 12MHz 25MHz。
◆ LSI是低速內(nèi)部時鐘,RC振蕩器,頻率為40kHz。
◆ LSE是低速外部時鐘,接頻率為32.768kHz的石英晶體。
在STM32中每個外設(shè)都有其單獨的時鐘,在使用某個外設(shè)之前必須打開該外設(shè)的時鐘 ,為什么要這么麻煩來設(shè)置每一個外設(shè)的時鐘而不是將所有外設(shè)的時鐘統(tǒng)一打開?因為STM32的外設(shè)繁多,外設(shè)的運作所需要的最佳時鐘各不相同,如果所有時鐘同時運行會給MCU帶來極大的負(fù)載,所以STM32為了實現(xiàn)低功耗,而設(shè)計的功能完善構(gòu)成復(fù)雜的時鐘系統(tǒng),稱之時鐘樹。使外設(shè)功能的時鐘可自配置。
03 STM32 時鐘樹
▲ 圖源網(wǎng)絡(luò)
上圖下紅框中LSE和LSI是提供給系統(tǒng)看門狗和RTC(實時時鐘)使用的。如果需要精度較高的RTC時鐘,需要使用LSE,頻率為32.768K提供一個精確的時鐘源。
HSI為8M,和HSE相比精度較差,對于性能無要求場景又要節(jié)省成本使用HSI。
在時鐘樹系統(tǒng)中,主時鐘選擇由PLL生成,PLL為鎖相環(huán)倍頻輸出,其時鐘輸入源可選擇為HSI/2、HSE或者HSE/2。倍頻可選擇為2~16倍,但是其輸出頻率最大不得超過72MHz。
css時鐘監(jiān)視系統(tǒng)但HSE失效時自動切換至HSI5、外設(shè)有獨立的時鐘分頻配置,主要有USB、SDIO、FSMC、APB1、APB2、ADC等。APB1和APB2是倆個總線橋:APB1和APB2,其中APB1是低速總線,APB2是全速總線。
具體哪些外設(shè)掛在那條總線上可參考下圖:
** 使用STM32CubeMX配置時鐘**
以STM32F105為例打開工程選擇HSE,選擇外部晶振作為輸入。
點擊Clock Configuration如下圖:
04 結(jié)尾
本篇主要分析STM32的時鐘,并以stm32f105為例使用STM32CubeMX配置時鐘演示。如有疑問,歡迎留言討論。
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!