编译环境为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);//高速内部振荡器准备就绪
}