STM8L051F3_03_CLK应用

本文介绍STM8L的CLK相关知识。内容分为以下几部分:

  • CLK简介
  • 系统时钟频率切换

1、CLK简介

STM8L051F3的时钟控制系统设计时非常稳定的,同时也很容易使用,它可以使得MUC在低消耗下获仍然保持优性能。用户可以通过管理分配到CPU&外设的时钟来达到降低功耗。STM8L051F3有一个安全无干扰的时钟切换机制允许用户切换系统时钟源,同时可以通过预分频器来控制系统时钟频率。时钟结构图如下:

注:STM8L051F3的Peripheral Clock enable是13 bit,没有LCD外设

 

STM8L051F3的系统时钟源有以下4种:

  • 16MHz内部高速(出厂已校准)RC时钟HSI
  • 1~16MHz外部高速振荡器时钟HSE
  • 768kHz外部低速振荡器时钟LSE
  • 38kHz内部低速低功耗时钟LSI

每个时钟源皆可独立打开或关闭来节省功耗,每个时钟源都可经过可编程预分频之后再用于驱动系统时钟,系统复位后默认使用的时钟是HSI/8。所有的外设时钟都是从系统时钟(SYSCLK)中派生出来的,除了以下几个:

  • BEEP(蜂鸣器)时钟,使用LSE/LSI
  • RTC时钟,使用LSE/LSI/HSI/HSE
  • 独立看门狗(IWDG)时钟

STM8LL051F3有一个外设时钟门(Peripheral clock gating),在系统复位后,所有的外设时钟是关闭的(除了PCKEN27),用户可以配置CLK_PCKENRx外设时钟门寄存器相应的PCKEN位来使能相应的外设时钟。

STM8LL051F内部有一个时钟安全系统(CSS),该系统的作用是在使用外部时钟作为系统时钟源时,对其检测试试检测,一旦外部时钟源出现异常就会做出相应的处理。STM8LL051F有一个可配置时钟输出功能(CCO),该功能是把系统时钟在CCO引脚上输出。

2、系统时钟频率切换

2.1 系统时钟频率配置

本小节内容介绍如何改变改变系统时钟的频率(不改变系统时钟源)。系统上电时默认系统时钟源为HSI,频率为HSI/8 = 2MHz。例程通过按键KEY(外部中断方式)来改变系统时钟频率,LED1的闪烁速度会产生变化。内容比较简单,只需要一条语句即可改变系统时钟的频率:

CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);     //系统时钟1分频(16M)

使用的例程:STM8L051F3_03_CLK

2.2 例程介绍

主函数代码如下(初始化LED,EXTI,开启外部中断,进入循环):

void main(void)

{

  LED_Init();   //初始化LED1

  EXTI_Init();  //初始化KEY

  enableInterrupts();   //开总中断

while(1)

{

if(Flag != 0)       //判断标志位

      CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);     //系统时钟1分频(16M)

    delay_ms(500);

    GPIO_ToggleBits(LED1_GPIO_PORT, LED1_GPIO_PINS);//切换LED1状态

}

}

在主函数的循环中,根据判断Flag标志位是否被置位来决定是否改变系统时钟的频率,该标志位的置位程序在外部中断程序中,(程序中的Flag标志位在main.c文件中定义,中断函数的stm8l15x_it.c文件声明使用)如下:

INTERRUPT_HANDLER(EXTI4_IRQHandler,12)

{

    /* In order to detect unexpected events during development,

       it is recommended to set a breakpoint on the following instruction.

    */

   //延迟消抖

  delay_ms(10);

  //松手检测

while(GPIO_ReadInputDataBit(KEY_GPIO_PORT, KEY_GPIO_PINS)== 0);

  //标志位置1

  Flag = 1;

  //清除中断标志位

  EXTI_ClearITPendingBit(EXTI_IT_Pin4);

}

使用ST-LINK把程序下载到开发板中,LED1闪烁,按下KEY后LED1闪烁变快。注:由于核心板没有接HSE,所以这里不介绍系统时钟源的切换,在官方手册中有详细的系统时钟源切换的介绍。

 

 

  •  如需转载请说明出处

你可能感兴趣的:(stm8)