時鐘是微處理器的驅動力,類似人的心臟,只有不停地跳動系統才能正常運行。Stm32不同系列的時鐘基本結構類似,就是外設有些差別。這里以stm32f030系列為例來介紹。
在參考手冊中,時鐘樹如下所示:
圖中紅色塊表示時鐘源,這里一共有5個時鐘源。
1、8M HSI RC,這是芯片內部的RC時鐘
2、4-32M HSE OSC,這是外部時鐘,可以輸入外部時鐘或者晶振,精度高
3、32.7689k LSE OSC,這是RTC外部晶振時鐘
4、40K LSI RC,這是內部低速RC振蕩器時鐘
5、14M HSI14RC,這是專門給ADC用的內部14M RC晶振
根據自己的需求和硬件設計,選擇打開對應的時鐘源,不用的就不要打開,可以減少功耗。
紫色線表示Flash的時鐘,可以看到它的時鐘源是內部的8M RC振蕩器,從這里可以推測內部這個8M的時鐘基本在一直工作,因為程序運行時需要不斷地訪問flash。
實際在系統復位后,會默認使用這個內部的8M RC時鐘,而想要關掉它必須保證沒有任何設備直接或者間接使用它。
中間紅綠藍三條通路是系統時鐘的三種可選項。可以直接使用內部的8M RC時鐘,可以直接使用外部HSE OSC時鐘,或者通過PLL倍頻后的時鐘。
走PLL那條路需要:
1、 時鐘源分頻
2、 選擇PLL時鐘源
3、 PLL倍頻
4、 選擇PLL作為SYSCLK
只有通過PLL才能達到最高的工作頻率。
黃色塊是AHB分頻,青色塊是APB分頻,這倆上接了很多外設。
要訪問這些外設的寄存器,首先必須打開對應的時鐘。APB分成了兩組,需要在對應的寄存器中進行配置。
實際寫代碼的時候,使能一個時鐘以后要等待其穩定,每個時鐘源都有專門的寄存器位指示是否ready。另外,HSI 8M和HSI14M可以修正,以排除制造、溫度和干擾的影響。
至此系統的時鐘就搞定了,以后使用某個外設前,只需要使能對應的時鐘即可。
!!!:不同的處理器其細節可能會有些許差別,具體的情況還需要查閱參考手冊。
-
振蕩器
+關注
關注
28文章
3832瀏覽量
139034 -
STM32
+關注
關注
2270文章
10895瀏覽量
355739 -
微處理器
+關注
關注
11文章
2258瀏覽量
82403 -
時鐘
+關注
關注
10文章
1733瀏覽量
131446 -
STM32F030
+關注
關注
1文章
33瀏覽量
6656
發布評論請先 登錄
相關推薦
評論