本文介绍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,所以这里不介绍系统时钟源的切换,在官方手册中有详细的系统时钟源切换的介绍。

  • 如需转载请说明出处

STM8L051F3_03_CLK应用相关推荐

  1. 欢迎进入杰杰的博客导航一站式搜索(所有博客的汇总帖)

    网络的好朋友,你好,我是杰杰!如果我的博客有什么不足的地方,欢迎向我反馈:如果我的博客对你有帮助,那是我的荣幸!如果觉得文章很好,欢迎动动小手指,点个赞或者转发 -----杰杰. 欢迎关注我个人微信公 ...

最新文章

  1. 深入分析:12C ASM Normal冗余中PDB文件块号与AU关系与恢复
  2. bigdecimal 平均数_MapReduce实例-必须用Combine--求平均数
  3. abap常用系统变量
  4. Ionic4.x 中自定义公共模块
  5. 13 大论坛同开播!数百专家带你从机器学习技术与工程实践,聊到开源生态 | AI ProCon 2020...
  6. python 报错 wxPyDeprecationWarning: Using deprecated class PySimpleApp.
  7. Opencv图像数据结构剖析
  8. @@HOW TO:检查 MDAC 版本
  9. 互联网晚报 | 1月17日 星期一 | 飞猪推出买机票送核酸检测券服务;洋码头首个文旅场景免税店开业;2022年春运今日开启...
  10. html新浪短域名api,新浪短链接API接口示例
  11. 【存储知识】RAID(磁盘冗余阵列)与 LVM(逻辑卷管理器)
  12. 卷毛机器人抢大龙_EDG卷毛宣布退役:感谢WE和EDG的培养
  13. 用HTML5图形拼成的画房子,未来的房子绘画作品图片欣赏
  14. 如何打破自恋幻觉 武志红
  15. moviepy音视频开发:音频文件存取类AudioFileClip属性和方法介绍
  16. 用代码输出九九乘法表
  17. 关于机器人状态估计/VIO/VSLAM中能观性/可观性/FEJ的一些直接解释
  18. 零基础无实物一步一步学PLCS7-1200仿真(九)-八位流水灯/跑马灯
  19. 浅入深SpEL表达式注入漏洞总结
  20. Google Play 游戏 (PC 版) Beta 版现已开放更多市场

热门文章

  1. Wpf初学 ---03设计一个优美的注册登录界面(连接数据库)
  2. 2021-2025年中国液压磁力钻行业市场供需与战略研究报告
  3. 详解今日头条技术架构分析
  4. vant 个人中心头像修改
  5. selenium下载和安装
  6. 如何让WPS像word一样使用快捷键打开MathType
  7. 普通话水平测试用朗读作品60篇-(练习版)
  8. echarts循环图表
  9. 单片机 WIFI模块发送AT指令收不到回复问题
  10. 华为认证培训的话是远程还会面授好?