1、1~24mhz的高速外部晶體振盪器(hse),即外部晶振
2、1~24mhz的高速外部時鐘訊號(hse),
3、16mhz的高速內部rc振盪器(hsi)
4、128khz的低速內部rc振盪器(lsi)
由上述時鐘框圖,可以分析得知,16mhz hsi rc振盪器經過乙個分頻器,將時鐘訊號輸出到主時鐘選擇器。微控制器上電後預設該分頻器的值為8分頻,即微控制器上電主時鐘預設使用hsi 8分頻後的時鐘輸出,即主時鐘頻率fmaster=16mhz/8=2mhz,然後由主時鐘輸出時鐘訊號到外設和cpu。
可以通過讀取主時鐘狀態暫存器clk_cmsr來獲取當前主時鐘是採用的哪乙個時鐘源。
既然可以知道當前使用的是哪乙個時鐘源了,那麼怎麼切換呢?就需要操作主時鐘切換暫存器clk_swr和切換控制暫存器clk_swcr了,先看clk_swcr暫存器:
用到了低四位,切換忙標誌位swbsy,切換使能位swen,切換中斷使能位swien和時鐘切換中斷標誌位swif。
而向主時鐘切換暫存器clk_swr寫入資料可以指定要切換的時鐘源:
在開始切換時鐘時,需要首先置位swen,使能時鐘切換然後等待時鐘切換事件發生,然後機制時鐘切換即可,具體實現**如下(我這裡切換到hse時鐘源):
if(clk_cmsr !=0xb4)
在除錯時,**執行完成之後,如果clk_cmsr的值為0xb4則時鐘源切換成功。
這裡附上乙個例程,實現功能為:stm8時鐘源切換時鐘到hse(8mhz),然後在主函式中迴圈列印一串字串到pc機,例程位址為:
另外我的編譯環境使用的是iar for stm8
STM8 時鐘切換
hse hsi lsi 都可以作為系統主時鐘源,stm8 微控制器復位以後預設 hsi 的 8 分頻作為系統主時鐘,其原因是 hsi 穩定時間短,而其 8 分頻又可以保證系統在較差的 vdd 條件下安全啟動。在系統執行的過程中可以切換系統的主時鐘源。系統時鐘源的切換有 2 種方式 自動切換 手動切換...
STM8微控制器時鐘
時鐘樹 時鐘源有四種 外部高速晶振 hse 1 16mhz 內部高速rc振盪器 hsi 16mhz 外部低速晶振 lse 32.768 內部低速rc振盪器 lsi 38khz 系統預設配置的時鐘為hsi的8分頻既2mhz 外部時鐘配置hse clk deinit 復位所有時鐘暫存器 clk hsic...
1 時鐘無縫切換
時鐘切換分成兩種方式,普通切換和去毛刺無縫切換。普通切換 就是不關心切出的時鐘是否存在毛刺,這種方式電路成本小。如果時鐘切換時,使用此時鐘的模組電路處於非工作狀態,或者模組內電路被全域性復位訊號reset住的,即使切出毛刺也不會導致dff誤觸發,這樣的模組可以選擇用此種切換方式。寫法很簡單assig...