您的位置 首页 培训

stm8s开发(四) CLOCK的运用:时钟操控!

STM8S具有一个强大的时钟系统,内部提供一个高速16M的RC振荡器,和一个低速128K的RC振荡器。时钟控制器功能强大而且灵活易用。其目的在于使用户在获得最好性能的同时,亦能保证消耗的功率最

  STM8S具有一个强壮的时钟体系,内部供给一个高速16M的RC振荡器,和一个低速128K的RC振荡器。

  时钟操控器功能强壮并且灵敏易用。其意图在于运用户在取得最好功能的一起,亦能确保耗费的功率最低。用户可独登时办理各个时钟源,并将它们分配到CPU或各个外设。主时钟和CPU时钟均带有预分频器。具有安全可靠的无故障时钟切换机制,可在程序运转中将主时钟从一个时钟源切换到另一个时钟源。

  一般来说,时钟树是装备时钟、操控时钟的根据,所以需求把握,以下是STM8S时钟树图:

  从图中看出,一共有3个时钟源,分别是HSE(高速外部时钟)、HSI(高速内部时钟)、LSI(低速内部时钟)。

  HSE(高速外部时钟)可经过外部晶振供给,HSI(高速内部时钟)为16M的RC振荡器,LSI(低速内部时钟)为128K的RC振荡器。

  高速时钟(HSE和HSI)能够经过分频器进行降频。降频往后的时钟和本来的时钟都能够经过Master Clock Switch进行挑选,

  以下是初始化体系时钟的函数(默许运用16M内部RC):

  void Set_HSISpeed(void)

  {

  //启用内部高速晶振且无分频16MHz

  CLK_ICKR|=0x01; //敞开内部HSI

  while(!(CLK_ICKR&0x02));//HSI准备就绪

  CLK_SWR=0xe1; //HSI为主时钟源

  CLK_CKDIVR=0x00; //HSI不分频

  }

  假如需求切换时钟,需求先等候时钟安稳:

  void Switch_LSISpeed(void)

  {

  CLK_SWCR|=0x02; //敞开切换

  CLK_ICKR|=0x08; //敞开LSI

  while(!(CLK_ICKR&0x10));//HSI准备就绪

  CLK_SWR=0xd2; //LSR为主时钟源

  while((CLK_SWCR & 0x01)==0x01);//等候切换完结

  CLK_CKDIVR=0x00; //LSI不分频

  CLK_SWCR&=(~0x02); //封闭切换

  }

  void Switch_HSISpeed(void)

  {

  CLK_SWCR|=0x02; //敞开切换

  CLK_ICKR|=0x01; //敞开内部HSI

  while(!(CLK_ICKR&0x02));//HSI准备就绪

  CLK_SWR=0xe1; //HSI为主时钟源

  while((CLK_SWCR & 0x01)==0x01);//等候切换完结

  CLK_CKDIVR=0x00; //HSI不分频

  CLK_SWCR&=(~0x02); //封闭切换

  }

  假如想直接降频,只需求设置一直分频:

  void Set_CPU_Full_Speed(void)

  {

  CLK_CKDIVR=0x00; //HSI不分频

  }

  void Set_CPU_Low_Speed(void)

  {

  CLK_CKDIVR=0x07; //HSI 128分频

  }

  以上便是初始化时钟的代码,一般用于mian函数的榜首句话,便利今后核算其他外设的时钟频率。

  附上stm8s在IAR环境下的项目工程,包含了SPI、I%&&&&&%、PWM、AWU、USART、EEPROM等片上硬件的初始化代码。

  http://download.csdn.net/detail/devintt/9454188

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/peixun/184101.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部