快速导航×

主页 > 岳华花艺新闻 > 公司新闻 >
岳华花艺:Stm8s时钟源切换发表于: 2019-03-13 10:48
STM8 单片机 的时钟源非常丰富。 该芯片既有16MHZ的高速RC振荡器,也有128KHZ的低速RC振荡器,并且可以从外部连接到高速RC振荡器。 晶体振荡器。 在系统运行期间,可以根据需要自由切换。微控制器复位后,首先使用内部高速RC振荡器,分频系数为8,因此CPU上电操作的时钟频率为2MHZ。

切换时钟源涉及的主要寄存器有:主时钟切换寄存器CLK_SWR和切换控制寄存器CLK_SWCR。

这篇文章提到了地址: http://www。EEPW。通讯器。cn /文章/ 201611 / 315604。html文件的后缀

主时钟切换寄存器的复位值为0xe1,表示切换到内部高速RC振荡器。当0xb4写入该寄存器时,表示切换到外部高速晶体振荡器。

在实际的切换过程中,切换控制寄存器中的SWEN (位1 岳华花艺)应该首先被设置为1,然后CLK_SWCR的值应该被设置,最后应该判断切换控制寄存器中的SWIF标志是否被成功切换。

以下实验程序将首先掌握 时钟源切换 在外部晶体振荡器上,振荡频率为8Hz,然后快速闪烁。 领先 指示灯。然后,主时钟源切换到内部振荡器,振荡频率为2MHZ,然后LED指示灯缓慢闪烁。通过观察LED指示灯的闪烁频率,可以看出,由于主时钟源的变化,相同的周期代码,闪烁频率和持续时间都发生了变化。

类似地,ST的开发工具被用来生成C语言程序的框架,然后框架中的main被修改。c、修订后的代码如下。

/ /程序描述:通过切换CPU的主时钟源来改变CPU的运行速度

#包括“STM8S 207C _ S”。h "

/ /函数函数:延迟函数

/ /输入参数:毫秒-假定CPU的主频为2MHZ,延迟的毫秒数

/ /输出参数:无

/ /返回值:无

/ /注:无

无效延迟码(无符号整数毫秒)

{ 0 ˇ 0 ˇ 0 ˇ 0 ˇ 0 ˇ 0 ˇ 0 ˇ 0 ˇ

无符号字符I;

而(毫秒 ! = 0 )

{

对于( I = 0;i<250;i++)

{

}

对于( I = 0;i<75;i++)

{

}

女士;

}

}

主( )

{

国际一级;

/ /将PD3设置为推挽输出以推动LED

PD _ DDR = 0x 08;

PD _ CR1 = 0x 08;

PD _ CR2 = 0x 00;

/ /启动外部高速晶体振荡器

CLK _ 岳华花艺ECKR = 0x 01;/ /允许外部高速振荡器工作

而( ( CLK _ ECKR & 0x 02 ) = 0x 00 );/ /等待外部高速振荡器就绪

/ /请注意,复位后的CPU时钟源来自内部RC振荡器

对于(;;) / /输入无限循环

{

/ /接下来,将CPU时钟源切换到开发板上频率为8Hz的外部高速晶体振荡器

/ /从发光二极管可以看出,程序的运行速度有了明显的提高。

CLK _ SWCR = CLK _ SWCR | 0x 02;/ /瑞典 <-岳华花艺 1

CLK _ SWR = 0B4;/ /选择芯片外部的高速振荡器作为主时钟

而( ( CLK _ SWCR & 0x 08 ) = 0 );/ /等待成功切换

CLK _ SWCR = CLK _ SWCR & 0xFd;/ /清除开关标志

对于( I = 0;i<10;i++) // LED高速闪烁10次

{

PD _ ODR = 0x 08;

DelayMs ( 100 );

PD _ ODR = 0x 00;

DelayMs ( 100 );

}

/ /接下来,将CPU时钟源切换到内部RC振荡器,因为CLK_CKDIVR的重置值是0x18

/ /因此,16MHZ RC振荡器仅在除以8后用作主时钟,因此频率为2MHZ。

/ /从发光二极管上,我们可以看到程序的运行速度明显下降。

CLK _ SWCR = CLK _ SWCR | 0x 02;/ /瑞典 <- 1

CLK _ SWR = 0xE 1;/ /选择HSI作为主时钟源

而( ( CLK _ SWCR & 0x 08 ) = 0 );/ /等待成功切换

CLK _ SWCR = CLK _ SWCR & 0xFd;/ /清除开关标志

对于( I = 0;i<10;i++) // LED低速闪烁10次

{

PD _ ODR = 0x 08;

DelayMs ( 100 );

PD _ ODR = 0x 00;

DelayMs ( 100 );

}

}

}

岳华花艺
广州岳华花艺有限公司 - 官方网站
TOP
导航 电话 短信 咨询 地图 主页