STM8S学习笔记-时钟控制1

本文详细介绍了STM8S单片机的四种可用时钟源及其切换方法,包括外部晶体振荡器、外部时钟、高速内部RC振荡器及低速内部RC振荡器。同时,还提供了时钟源自动与手动切换的示例代码,并讨论了时钟分频及其他与时钟管理相关的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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时钟校准等,下次再讨论吧。

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/DevLinux/p/3773750.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值