stm8 clock

stm8時鐘源有4種:
1. 16MHz的高速內部時鐘源HSI
2. 1到16MHz的高速外部時鐘源HSE
3. 32.768KHz的低速外部時鐘源LSE
4. 38KHz的低速內部時鐘源LSI

這4種時鐘源都可以作爲系統時鐘,大家也可以用示波器量一下59引腳,看輸出的的時鐘頻率是否正確,在量之前需要做如下設置:
void main(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。

系統時鐘默認使用的是HSI,並且是經過8分頻的,也就是2MHz,可以通過函數CLK_GetClockFreq()去得到系統時鐘,例如:

void main(void)
{
	uint32_t freq = CLK_GetClockFreq();
	while (1);
}
很奇怪,調試時通過watch窗口去查看變量freq值時,上面寫法纔是正確的,如果改成下面的寫法:
void main(void)
{
	uint32_t freq;

	freq = CLK_GetClockFreq();
	while (1);
}
那麼查看freq值時就會有問題,這裏暫時還不知道是什麼原因,可能和這個開發環境有關吧。

當然,也可以使用CLK_SYSCLKDivConfig()函數去設置系統時鐘的分頻,例如不分頻:
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
那麼設置後,系統時鐘就爲16MHz了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章