STM8S学习笔记-时钟控制1

时间:2021-07-31 10:16:14

STM8S学习笔记-时钟控制1

1.图13可见,STM8S单片机主要有四种时钟源可供选择:

1).1-24MHz外部晶体振荡器(HSE).

2).最大24MHz外部时钟(HSE ext).

3).16MHz高速内部RC振荡器(HSI).

4).128KHz低速内部RC振荡器(LSI).

2.主时钟可以从这四种时钟源中任意切换,切换过程可通过自动切换和手动切换。

自动切换过程:使能相应的时钟源,使能切换,等待切换完成。

例如:从HSI切换到外部HSE,子程序如下:

void CLKToHSE(void)

{

while(!(CLK_ECKR&0x02));  //等待HSE就绪

CLK_ECKR  |= 0x01;   //使能HSE

CLK_SWCR |= 0x20;    //使能切换

CLK_SWR = 0xB4; //  (0xE1----HSI )

// (0xD2 ----LSI)

//(0xB4----HSE)

while(!(CLK_SWCR&0x01));  //等待时钟切换完成

CLK_ICKR &= ~0x01;     //关闭HSI

}

手动切换:

手动切换和自动切换差不多,只是要等待时钟稳定后进行切换。

例如,HSI切换至内部LSI,子程序如下:

void CLKToLSI(void)

{

while(!(CLK_ICKR&0x10));  //等待LSI就绪

CLK_ICKR |= 0x08;   //使能LSI

CLK_SWR = 0xD2; //  (0xE1----HSI)

// (0xD2 ----LSI)

//  (0xB4----HSE)

while(!(CLK_SWCR&0x08));

CLK_SWCR |= 0x20;    //使能切换

CLK_ICKR &= ~0x01;     //关闭HSI

}

3.时钟分频

HSI可通过CLK_CKDIVR的HSIDIV[1:0]分频。可选择分频因子1,2,4,8。

CPU时钟又可以通过CLK_CKDIVR的CPUDIV[2:0]分频。可选择分频比1,2,4,8,16,32,64,128。

外设时钟可通过CLK_PCKENR1,CLK_PCKENR2选择使能或关闭,复位情况下默认外设时钟全部打开,不熟悉

的情况下,可以选择默认,以防没有配置时钟而无法使用外设。关闭不必要的外设可以降低系统功耗。

另外还有时钟安全系统CSS,时钟输出,时钟中断,SWIM时钟控制,HSI时钟校准等,下次再讨论吧。