Clock
1 概述
时钟是单片机的脉搏,是单片机的驱动源,使用任何一个外设都必须打开相应的时钟。这样的好处是,如果不使用一个外设的时候,就把它的时钟关掉,从而可以降低系统的功耗,达到节能,实现低功耗的效果。每个时钟tick,系统都会处理一步数据,这样才能让工作不出现紊乱。简单来说,时钟是具有周期性的脉冲信号,如下图:
2 特性
- 复位后,设备默认重置时钟为 HSI/8,为 2MHz
- 内部时钟和外部时钟区别如下表:
时钟类型 | 优点 | 缺点 |
---|
外部时钟(石英晶体振荡器) | 震荡频率精度比较高,温度漂移小,外接信号发生器的误差也很小 | 在起振开始时信号是最不稳定的,这时候需要让单片机略过这段不稳定的时间,默认情况下,在时钟信号释放之前插入一个振荡器周期的延迟。需要设定晶体稳定时间选项OPT5中的选项参数。 |
内部时钟(RC振荡器) | 启动快和所需启动稳定时间比较短 | 产生的时钟精度比较低,而且振荡频率很容易受供电电压、工作环境温度等影响导致频率漂移 |
3 CLK是如何工作的?(时钟框图)
3.1 STM8 时钟树简图
3.2 STM8 时钟框图
4 相关寄存器
- CLK_CKDIVR.CKM[2:0] 系统时钟分频寄存器(System clock prescaler)
作用:用于配置分频系数,默认为 011:系统时钟源 8 分频 - CLK_ICKCR 内部时钟寄存器(Internal clock register)
作用:用于配置内部高速时钟以及内部低速时钟,默认0x11:内部高速时钟开启 - CLK_PCKENR1、CLK_PCKENR2、CLK_PCKENR3 外设时钟门控寄存器(Peripheral clock gating register)
作用:用于配置相应外设时钟使能 - CLK_CCOR 可配置时钟输出寄存器(Configutable clock output register)
作用:用于配置时钟输出的分频系数及时钟源 - CLK_ECKCR 外部时钟寄存器(External clock register)
作用:用于配置外部高速时钟以及外部低速时钟 - CLK_SCSR 系统时钟状态寄存器(System clock status register)
作用:用于查看系统时钟源 - CLK_SWR 系统时钟选择寄存器(System clock switch register)
作用:用于配置系统时钟源,默认 0x01:高速内部时钟作为系统时钟源
5 系统时钟配置步骤
- 选择时钟源
- 选择系统时钟源,配置总线分频器
- 外设时钟使能或禁用
相关函数介绍如下表:
函数 | 主要寄存器 | 主要功能 |
---|
Clk_OscConfig | CLK_ICKCR、CLK_ECKCR | 使能所选时钟源 |
ClK_SysClockConfig | CLK_SWR 、 CLK_CKDIVR.CKM | 选择系统时钟源,配置总线分频器 |
Clk_PeripheralClockConfig | CLK_PCKENR1、CLK_PCKENR2、CLK_PCKENR3 | 外设时钟使能或禁用 |