新晶元配置第乙個工作就是要保證系統時鐘是對的
1.雖然systeminit()會在main之前被執行,但我們可以手動呼叫此函式,以利於我們跟蹤時鐘是否配置正確。此函式位於
2.systeminit()下找到setsysclock();
3.可以看到有很多個巨集,如果你沒去掉注釋是跟蹤不過去的,只能乙個乙個試,比如跟蹤到sysclk_freq_72mhz,但你的系統時鐘最高只能是36mhz,那就要如下修改,注釋sysclk_freq_72mhz,去掉sysclk_freq_36mhz的注釋
4.在主函式呼叫rcc_getclocksfreq(&rcc_clocksfreq);在此函式後打斷點,觀察watch1視窗的數值是否是36mhz,如果是則ok。
5.如換算成10進製還不是36mhz,則繼續跟蹤setsysclock()->setsysclockto36(),發現函式裡面有針對pll倍頻和分頻設定,根據晶元型號選擇更改,cl 或者其他,庫函式有個缺點就是cl型號的晶元預設外部晶振是25m,其他型號是8m,當我們接12m時就要更改此檔案了。
首先要在stm32f10x.h把hse_value改成實際晶振值,再在system_stm32f10x.c下計算pll分頻,配置好引數讓它計算到36m。再按照步驟4檢視是否對了。
6.目標結果
經過上圖修改,12m / 2 * 6 = 36m,可以看到下圖sysclk_frequency是0x02255100,即36000000,修改ok
STM32系統時鐘
1 參考資料 stm32f1開發指南 庫函式版本 4.3小節 時鐘系統 stm32中文參考手冊v10 第六章 復位和時鐘控制 rcc 2 時鐘系統知識總結 1 stm32有5個時鐘源 hsi hse lsi lse pll hsi是高速內部時鐘,rc振盪器,頻率為8mhz,精度不高 hse是高速外部...
stm32系統時鐘
hsi 約等於8mhz rc振盪器產生的時鐘 hse 外部時鐘 css 如果檢測到外部時鐘的損壞,自動切換到hsi 系統時鐘和rtc時鐘 均有三個 systick定時器 簡單的定時器,常用來做延時和心跳時鐘 24位的倒計時定時器 ctrl暫存器 其實滴答定時器很簡單,就是設定初值,然後延遲,最後就是...
STM32之系統時鐘
使用stm32已經有一段時間,為了快速完成任務習慣性在已有 的基礎上進行部分修改,而沒有仔細閱讀資料手冊,詳細分析引數設定的緣由。現將逐步將stm32的各部分內部結構一次進行細節的學習,今天進行stm32的時鐘部分。stm32f103系列時鐘最高可以至72mhz,時鐘 包括hse 外部高速時鐘 ls...