昨天被安排做别的工作,耽误一天,今天继续写,坚持学习。

1,STM8S的4种时钟源可用做主时钟:
● 1-24MHz高速外部晶体振荡器(HSE)
● 最大24MHz高速外部时钟信号(HSE user-ext)
● 16MHz高速内部RC振荡器(HSI)
● 128KHz低速内部RC(LSI)
各个时钟源可单独打开或关闭,从而优化功耗。

2,系统的启动

为使系统快速启动,复位后时钟控制器自动使用HSI的8分频(HSI/8)做为主时钟。其原因为HSI的稳定时间短,而8分频可保证系统在较差的VDD条件下安全启动。

另外,stm8s还可以切换时钟源,有自动和手动两种方法,先不做讨论。

3,几个时钟寄存器

时钟状态寄存器(CLK_CMSR)

 

 

主时钟切换寄存器(CLK_SWR)

可以知道系统复位后,会自动用内部高速时钟作为时钟源。

void main(void)
{
  /* Infinite loop */
  CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//设置为内部高速时钟
  
  while (1)
  {
  }
  
}

CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1)函数设置内部时钟不分频。

void CLK_HSIPrescalerConfig(CLK_Prescaler_TypeDef HSIPrescaler)
{

    /* check the parameters */
    assert_param(IS_CLK_HSIPRESCALER_OK(HSIPrescaler));

    /* Clear High speed internal clock prescaler */
    CLK->CKDIVR &= (uint8_t)(~CLK_CKDIVR_HSIDIV);

    /* Set High speed internal clock prescaler */
    CLK->CKDIVR |= (uint8_t)HSIPrescaler;

}

所以,系统复位后直接调用CLK_HSIPrescalerConfig函数,就设置系统时钟为不分频的内部高速时钟。

 

版权声明:本文为Rainingday原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Rainingday/p/5947483.html