眾所周知,時鐘系統是 cpu 的脈搏,就像人的心跳一樣。所以時鐘系統的重要性就不言而 喻了。
stm32 的時鐘系統
stm32 的時鐘系統比較複雜,不像簡單的 51 微控制器乙個系統時鐘就可以解決一切。於 是有人要問,採用乙個系統時鐘不是很簡單嗎?為什麼 stm32 要有多個時鐘源呢? 因為首先 stm32 本身非常複雜,外設非常的多,但是並不是所有外設都需要系統時鐘這麼高的頻率,比 如看門狗以及 rtc 只需要幾十 k 的時鐘即可。同乙個電路,時鐘越快功耗越大,同時抗電磁幹 擾能力也會越弱,所以對於較為複雜的 mcu 一般都是採取多時鐘源的方法來解決這些問題。
stm32 有5個時鐘源:hsi、hse、lsi、lse、pll。
①、hsi是高速內部時鐘,rc振盪器,頻率為8mhz,精度不高。
②、hse是高速外部時鐘,可接石英/陶瓷諧振器,或者接外部時
鐘源,頻率範圍為4mhz~16mhz。
③、lsi是低速內部時鐘,rc振盪器,頻率為40khz,提供低功耗時鐘。wdg
④、lse是低速外部時鐘,接頻率為32.768khz的石英晶體。rtc
⑤、pll為鎖相環倍頻輸出,其時鐘輸入源可選擇為hsi/2、hse或者hse/2。
倍頻可選擇為2~16倍,但是其輸出頻率最大不得超過72mhz。
系統時鐘sysclk可**於三個時鐘源:
①、hsi振盪器時鐘
②、hse振盪器時鐘
③、pll時鐘
其圖右下角css為時鐘監視系統,當外部系統系統時鐘hse出現故障時,為了防止系統時鐘因此而故障,css將把路線自動切換成hsi.
3.stm32可以選擇乙個時鐘訊號輸出到mco腳(pa8)上,可以選擇為pll
輸出的2分頻、hsi、hse、或者系統時鐘。
4這從時鐘圖上可以看出,其他所有外設的時鐘最 終**都是 sysclk。sysclk 通過 ahb 分頻器分頻後送給各模組使用。這些 模組包括:
①、ahb 匯流排、核心、記憶體和 dma 使用的 hclk 時鐘。
②、通過 8 分頻後送給 cortex 的系統定時器時鐘,也就是 systick 了。
③、直接送給 cortex 的空閒執行時鐘 fclk。
④、送給 apb1 分頻器。apb1 分頻器輸出一路供 apb1 外設使用(pclk1,最大 頻率 36mhz),另一路送給定時器(timer)2、3、4 倍頻器使用。
⑤、送給 apb2 分頻器。apb2 分頻器分頻輸出一路供 apb2 外設使用(pclk2, 最大頻率 72mhz),另一路送給定時器(timer)1 倍頻器使用。
其中以下三個外設時鐘使能常需要用到
rcc_apb1periphclockcmd(): //apb1線上外設時鐘使能
rcc_apb2periphclockcmd(); //apb2線上外設時鐘使能
rcc_ahbperiphclockcmd(); //ahb線上外設時鐘使能
對照《stm32中文參考手冊v10》7.3節 p85~102
了解這些暫存器的作用。
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...