關于STM8的時鐘源配置
STM8的主時鐘是由內部時鐘分頻后得到或者直接是外部晶振產生(或外部直接輸入)的時鐘。
CPU時鐘分頻器分頻主時鐘后供CPU使用
外設(如定時器,UART)使用的不是CPU相同的時鐘,而是主時鐘,當然、當CPU分頻器分頻因子是1時CPU時鐘和外設輸入的時鐘頻率是相等的。
STM8復位時默認使用內部高速RC時鐘,如果需要切換到外部晶振,那就需要用軟件實現切換,這一點與AVR不同,AVR的時鐘源選擇是通過熔絲位的,在程序中是無法切換的,其優點是配置簡單,無需固件切換,但誤配置熔絲位會鎖死芯片,而STM8的軟件配置方式有效的避免了時鐘源選擇導致的鎖芯片現象。
下面是切換時鐘源到外部晶振的配置代碼供參考:
//使用庫
void CLK_Configuration(void)
{
CLK_DeInit();
CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);//時鐘分頻設置系統時鐘12M不分頻
CLK_HSECmd(ENABLE);//外部時鐘使能
CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSE, DISABLE, DISABLE);
CLK_ClockSwitchCmd(ENABLE);
}
//不使用庫
void CLK_Configuration(void)
{
CLK->CKDIVR=0;//不分頻
CLK->ECKR = 0x01; //啟動外部高速晶體振蕩器, 允許外部高速振蕩器工作
while((CLK->ECKR & 0x02) == 0x00); // 等待外部高速振蕩器準備好
CLK->SWCR = CLK->SWCR | 0x02;
CLK->SWR = 0xB4; // 選擇芯片外部的高速振蕩器為主時鐘
while((CLK->SWCR & 0x08) == 0); // 等待切換成功
CLK->SWCR = CLK->SWCR & 0xFD; // 清除切換標志
上一篇:STM8時鐘配置
下一篇:stm8時鐘源選擇配置
推薦閱讀
史海拾趣