0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM8S时钟系统的时钟初始化函数实现

牵手一起梦 来源:eefocus 作者:eefocus 2020-01-24 17:32 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

时钟控制器功能强大而且灵活易用。其目的在于使用户在获得最好性能的同时,亦能保证消耗的功率最低。用户可独立地管理各个时钟源,并将它们分配到CPU或各个外设。主时钟和CPU时钟均带有预分频器。具有安全可靠的无故障时钟切换机制,可在程序运行中将主时钟从一个时钟源切换到另一个时钟源。

一般来说,时钟树是配置时钟、控制时钟的依据,所以需要掌握,以下是STM8S时钟树图:

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函数的第一句话,方便以后计算其他外设的时钟频率。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    114

    文章

    17874

    浏览量

    195076
  • 振荡器
    +关注

    关注

    28

    文章

    4191

    浏览量

    143163
  • 时钟
    +关注

    关注

    11

    文章

    1999

    浏览量

    135228
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    AT32F011时钟配置说明

    */ delay_init(); /* 因系统时钟频率切换,重新初始化 delay */ clkout_config(); /* 因 crm 复位,重新配置 clkout */ }NMI 中断
    发表于 03-29 10:34

    国民技术发布N32Cube芯片配置与初始化代码生成工具

    1月30日,国民技术(NSING)正式发布N32Cube——芯片配置与初始化代码生成工具,让时钟、引脚与外设的配置一目了然、轻松上手!
    的头像 发表于 02-02 15:26 869次阅读
    国民技术发布N32Cube芯片配置与<b class='flag-5'>初始化</b>代码生成工具

    MCU工程初始化,到底该不该交给工具?

    背景 工程初始化重复性高,但出错成本大。工程师常问:交给工具是不是会丢失掌控? 工具可做的事 时钟树、引脚复用、外设配置 工程生成、代码模板套用 参数校验和约束检查 工程师仍需做的事 特殊业务逻辑
    的头像 发表于 01-29 10:18 248次阅读
    MCU工程<b class='flag-5'>初始化</b>,到底该不该交给工具?

    掌握 LuatIO:GPIO 复用模式初始化配置全流程解析

    在使用 LuatIO 进行嵌入式应用开发时,合理配置 GPIO 的复用功能是实现外设控制的前提。本文全面解析 GPIO 引脚由普通 IO 转换为复用功能引脚的初始化流程,包括时钟使能、模式选择、速度
    的头像 发表于 01-23 15:28 2338次阅读
    掌握 LuatIO:GPIO 复用模式<b class='flag-5'>初始化</b>配置全流程解析

    EtherCAT总线初始化步骤

    EtherCAT(Ethernet for Control Automation Technology)是一种高性能的工业以太网通信协议,广泛应用于工业自动领域。其初始化过程是确保系统稳定运行
    的头像 发表于 12-22 10:10 934次阅读
    EtherCAT总线<b class='flag-5'>初始化</b>步骤

    铁路时钟系统介绍、时钟系统、授时服务器

    时钟系统
    西安同步电子科技有限公司
    发布于 :2025年11月12日 17:39:23

    SD卡初始化原理讲解与实现

    收到回应 0x01 表示成功进入等待状态 3 拉高 CS,发送 8时钟 复位成功后我们就可以对其进行初始化了。初始化的过程较复杂,对其过程总结如下: 4 使用 CMD,发送 CM
    发表于 10-29 06:33

    为什么使用以下命令初始化系统时钟源时,HCLK的时钟源无法切换到PLL?

    为什么使用以下命令初始化系统时钟源时,HCLK的时钟源无法切换到PLL?
    发表于 08-26 08:22

    GraniStudio:IO初始化以及IO资源配置例程

    IO资源配置.gsp文件,点击打开,完成导入。 2.功能说明 实现连接格拉尼控制器IO块以及配置输入输出IO点。 2.1通过初始化IO算子连接格拉尼控制器IO块,导入工程自动进行连接。 2.2 通过IO配置算子输出配置的IO表。 第一次使用GS软件时操作步骤如下: (1)
    的头像 发表于 08-22 17:34 1050次阅读
    GraniStudio:IO<b class='flag-5'>初始化</b>以及IO资源配置例程

    GraniStudio:初始化例程

    1.文件运行 导入工程 双击运行桌面GraniStudio.exe。 通过引导界面导入初始化例程,点击导入按钮。 打开初始化例程所在路径,选中初始化.gsp文件,点击打开,完成导入。 2.功能
    的头像 发表于 08-22 16:45 1034次阅读
    GraniStudio:<b class='flag-5'>初始化</b>例程

    定义IO初始化结构体

    由上述IOPORT相关功能的枚举类型我们可以知道,在对IOPORT模块进行初始化时需要根据情况配置它们。因此我们定义一个IOPORT初始化的结构体类型IOPORT_Init_t,它的成员包括了由上述所有枚举类型所声明的变量,因此该结构体类型的变量可以包含IOPORT的相关
    的头像 发表于 07-16 16:26 1567次阅读

    NVMe高速传输之摆脱XDMA设计之七:系统初始化

    直接采用PCIe实现NVMe功能,它的系统初始化流程主要分为链路训练、PCIe 初始化和 NVMe 初始化, 分别
    发表于 07-04 09:14

    IM 系列设备过载保护机制下界面初始化中断的底层逻辑与解决方案

    一、过载保护机制与界面初始化的关联基础 IM 系列设备的过载保护机制是保障设备安全运行的核心功能,其通过传感器实时采集设备运行参数,如电流、电压、温度、系统资源占用率等。一旦这些参数超出预设阈值
    的头像 发表于 06-27 09:58 680次阅读