編譯環境爲iar,芯片是stm8s105s4。外部晶振是8M。後面內容的主時鐘也都是以此時鐘來進行編寫。clk1_init將外部晶振(HSE)作爲主時鐘源,以自動切換的方式,將主時鐘配置爲8M。clk2_init將內部16M晶振(HSI)進行2分頻後也是8M。這樣就完成了stm8s的時鐘配置。需要注意的是,stm8s以外部晶振作爲時鐘的時候,沒有分頻器,如果在切換後對時鐘進行分頻,即修改CLK_CKDIVR_HSIDIV,會重新以HSI爲主時鐘源。
void clk1_init(void)
{CLK_SWCR_SWEN = 1;//時鐘切換使能
CLK_SWR = 0xB4;//切換至外部時鐘
while(!CLK_ECKR_HSERDY);//高速外部振盪器準備就緒
}
void clk2_init(void)
{
CLK_CKDIVR_HSIDIV =1;//設置內部時鐘2分頻->8MHz
while(!CLK_ICKR_HSIRDY);//高速內部振盪器準備就緒
}