stm8時鐘源有4種:
1. 16MHz的高速內(nèi)部時鐘源HSI
2. 1到16MHz的高速外部時鐘源HSE
3. 32.768KHz的低速外部時鐘源LSE
4. 38KHz的低速內(nèi)部時鐘源LSI
這4種時鐘源都可以作為系統(tǒng)時鐘,大家也可以用示波器量一下59引腳,看輸出的的時鐘頻率是否正確,在量之前需要做如下設(shè)置:
voidmain(void)
{
GPIO_Init(GPIOC,GPIO_Pin_4,GPIO_Mode_Out_PP_High_Fast);
//CLK_CCOConfig(CLK_CCOSource_HSI,CLK_CCODiv_1);/*16MHz*/
CLK_CCOConfig(CLK_CCOSource_HSI,CLK_CCODiv_16);/*1MHz*/
while(1);
}
如果選擇HSI作為時鐘輸出,不分頻的話量出來是16MHz,如果16分頻的話量出來是1MHz。
系統(tǒng)時鐘默認(rèn)使用的是HSI,并且是經(jīng)過8分頻的,也就是2MHz,可以通過函數(shù)CLK_GetClockFreq()去得到系統(tǒng)時鐘,例如:
voidmain(void)
{
uint32_tfreq=CLK_GetClockFreq();
while(1);
}
很奇怪,調(diào)試時通過watch窗口去查看變量freq值時,上面寫法才是正確的,如果改成下面的寫法:
voidmain(void)
{
uint32_tfreq;
freq=CLK_GetClockFreq();
while(1);
}
那么查看freq值時就會有問題,這里暫時還不知道是什么原因,可能和這個開發(fā)環(huán)境有關(guān)吧。
當(dāng)然,也可以使用CLK_SYSCLKDivConfig()函數(shù)去設(shè)置系統(tǒng)時鐘的分頻,例如不分頻:
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
那么設(shè)置后,系統(tǒng)時鐘就為16MHz了。