×
嵌入式 > 技术百科 > 详情

STM8S单片机低功耗应用中时钟源切换时的注意点

发布时间:2023-05-23 发布时间:
|

简介:一般正常运行时,我们使用的时HSE(外部高速时钟源),当准备进入低功耗时,我们会切换到内部高速时钟HSI(一般需要分频以降低功耗),关闭HSE(若不关闭就不会出现下面的问题,即不用看本文了)。当从低功耗退出,进入正常运行时,会切换HSE。

这时由于之前关闭了HSE,再次打开HSE时会需要一段时间才会ready,然后再由HSI切换到HSE。


//该函数可实现切换时钟源功能。HSE与HSI互切。


void Switch_SysClock(CLK_Source_TypeDef CLK_NewClock)


{


switch(CLK_NewClock)


{


case CLK_SOURCE_HSE:


//启用外部高速晶振且无分频。12M.


CLK->SWCR|=0x02; //开启切换


CLK->ECKR|=0x01; //使能外部高速晶振


while((CLK->ECKR & 0x02)==0x00); //等待HSE稳定。


CLK->SWR =0xB4;


while((CLK->SWCR & 0x01)==0x01);


CLK->CKDIVR=0x00;


CLK->SWCR&=(~0x02);//关闭切换


CLK->ICKR &= 0xFE;//关闭内部高速晶振


break;


case CLK_SOURCE_HSI:


CLK->SWCR |= 0x02;/开启切换


CLK->ICKR |= 0x01;//使能内部高速晶振


CLK->SWR = 0xE1;


while((CLK->SWCR & 0x01)==0x01);


//CLK->CKDIVR =0x08;//启用内部高速晶振且2分频。8M.


CLK->CKDIVR =0x18;//启用内部高速晶振且8分频。2M.


CLK->SWCR &= (~0x02);//关闭切换


CLK->ECKR &= 0xFE;


break;


case CLK_SOURCE_LSI:


/*


*/


default:break;


}


}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
变废为宝.电话亭将变多功能5G基站?破解5G BBU集中机房建设难题.原来可以如此简单!