刚入STM32 用了也有一段时间了,先做了中断,CAN,SPI。都是跟着网上的例子直接粘贴外设的初始化代码,看的大概能懂,但是时钟一直迷迷糊糊,不清不楚。

STM32为了实现低功耗,而设计的功能完善构成复杂的时钟系统,称之时钟树。使外设功能的时钟可自配置。因为STM32外设众多,而不同的项目用到的外设参差不齐,所以可控的时钟可以实现降低产品功耗。

所有的外设在使用之前都必须设置时钟信号,才可以正常工作。以STM32F103C8T6时钟树为例,如下图所示:

图7和图8道理一样的,大家觉得那个容易理解就看那个图

图8

STM32的四个时钟源

   外部时钟

  • <1>高速外部时钟(HSE):外部时钟源,晶振频率可取范围为4~16MHz,我们一般采用8MHz的晶振。
  • <2>低速外部时钟(LSE):外部时钟源,主要提供给实时时钟模块,所以一般采用32.768KHz。

   内部时钟

  • <3>高速内部时钟(HSI):由内部RC振荡器产生,频率为8MHz,但不稳定。
  • <4>低速内部时钟(LSI):由内部RC振荡器产生,也主要提供给实时时钟模块,频率大约为40KHz。

以最常用的高速外部时钟(HSE)为例

  • <1>左边红色框框1 两个外部引脚接8M晶振的两端。
  • <2>8M时钟遇到第一个分频器PLLXTPRE,也就是HSE后面的第一个节点,我们不分频。
  • <3>时钟来到PLL Source Mux,可选输入的时钟信号有外部高速时钟(HSE)和内部高速时钟(HSI),选择HSE。
  • <4>接着信号走到锁相环PLL,具有倍频作用,我们选择倍频因子(PLL Mul),可取值2,3,...14,15,16,我们选择9倍频。现在时钟信号为8*9=72M。
  • <5>来到系统时钟源输入选择,可选时钟有HSE(8M)、HSI(8M)和经过倍频的PLL CLK(72M),选择PLL CLK作为系统时钟,此时系统时钟为72M。
  • <6>系统时钟(SYSCLK)来到AHB预分频器,可选分频系数:1,2,4,8,16,32,64,128,256。选择不分频,直接来到挂载低速外设的(APB1)PCLK1和挂载高速外设的(APB2)PCLK2。
  • <7>PCLK1低速外设时钟的最大频率为36M,所以最低进行2分频。PCLK2高速外设时钟的最大频率是72M,可选择不分频。

选择使用HSE也是因为外部时钟更稳定精准,经过倍频给STYCLK提供最大的时钟频率,发挥CPU的最优性能。了解了时钟树,在使用各个外设的时候就明白时钟信号的来源了。记得初始化外设一定要使能相应的时钟。

如果对你有所帮助,请点个赞,我会写更多博文,不足之处欢迎各位指导!!!

STM32 F103 时钟树详解相关推荐

  1. 【STM32-I2C学习总结】STM32:硬件-IIC详解 , 固件库编程 , 手把手教你实现IIC

    STM32:硬件-IIC详解 , 固件库编程 , 手把手教你实现IIC 一 .I2C物理层 二.协议层 1.I2C基本读写过程 (1)主机写数据到从机 (2)主机由从机中读数据 (3)I2C 通讯复合 ...

  2. STM32—— AHB、APB详解

     STM32-- AHB.APB详解 2016-07-14 20:35 590人阅读 评论(0) 收藏 举报 本文章已收录于: 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.概括 首先 ...

  3. STM32开发 -- 低功耗模式详解

    很多单片机都有低功耗模式,STM32 也不例外.当 CPU 不需继续运行时,可以利用多个低功耗模式来节省功耗. 这部分不是我负责,但是也是有必要看一下的. 参看: STM32F1开发指南-库函数版本_ ...

  4. stm32项目平衡车详解(stm32F407)下

    stm32项目平衡车详解(stm32F407)下 本文章学习借鉴于创客学院团队,以表感谢.教学视频 B站学习地址 HC-SRO4 超声波测距避障功能开发 TSL1401 CCD摄像头实现小车巡线功能 ...

  5. 如何用c语言编写stm32的程序吗,STM32入门C语言详解

    <STM32入门C语言详解>由会员分享,可在线阅读,更多相关<STM32入门C语言详解(6页珍藏版)>请在人人文库网上搜索. 1.最新 料推荐阅读 flash : 芯片内部存储 ...

  6. STM32开发 -- 蓝牙开发详解(2)

    如需转载请注明出处:https://juyou.blog.csdn.net/article/details/100708695 接着 STM32开发 – 蓝牙开发详解(1) 这一篇接着讲. 看了好久好 ...

  7. STM32开发 -- 低功耗模式详解(2)

    如需转载请注明出处:https://juyou.blog.csdn.net/article/details/98631012 上一篇文章 STM32开发 – 低功耗模式详解(1) 简单的总结了一下低功 ...

  8. JVM运行时区域详解

    转载自 JVM运行时区域详解 我们知道的JVM内存区域有:堆和栈,这是一种泛的分法,也是按运行时区域的一种分法,堆是所有线程共享的一块区域,而栈是线程隔离的,每个线程互不共享. 线程不共享区域 每个线 ...

  9. Android传输数据时加密详解

    Android传输数据时加密详解 ONE Goal , ONE Passion ! ------–MD5加密------- MD5即Message-Digest Algorithm 5(信息-摘要算法 ...

  10. STM32开发 -- 外部中断详解

    如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/87376865 在讲三轴加速度计的时候,提到外部中断.接下来就看看中断为什么这 ...

最新文章

  1. JDK1.10+scala环境的搭建之linux环境(centos6.9)
  2. java接收rowtype类型_Java PhysType.getJavaRowType方法代码示例
  3. 51单片机io位与 c语言,【51单片机】普通I/O口模拟SPI口C语言程序
  4. HttpClient settimeout 设置
  5. 网络安全基础相关概念
  6. 高德地图提示com.autonavi.amap.mapcore.MapCore.nativeNewInstance问题
  7. python爬虫笔记---1.13---第一篇
  8. Xilinx UCF约束语法一
  9. 【服务器管理】Ubuntu的一次惊心动魄的查杀挖矿病毒的经历:病毒伪装成python
  10. numpy的stack大白话解释
  11. Nvidia显卡官方驱动下载地址
  12. C#学习笔记 正则表达式
  13. 让你收入翻倍,做自媒体不会写文案?用这3款文案自动生成工具
  14. 橙色的商务企业网站模板 html整站下载 企业网站模板
  15. 图形学(8)二维三维图形变换
  16. 信息学奥赛一本通:1168:大整数加法
  17. 万东医疗“卖身”美的集团背后:已有高管离职,美年健康俞熔持股3年亏4亿元
  18. php怎么设置学年下拉框_在PHP中,为下拉列表设置“name”属性的方法是()
  19. 课程学习笔记1:自然辩证法概论
  20. Docker容器时间与宿主机不一致?3个解决方案

热门文章

  1. android进阶(一)Activity加载模式
  2. python目录和文件的基本操作_Python常用的文件及文件路径、目录操作方法汇总介绍...
  3. dhcp 续约review报文_DHCP工作原理( DHCP地址续约和释放)
  4. 生产环境和开发环境_生产环境 VS 开发环境,关于Kubernetes的四大认识误区
  5. odp.net连接oracle9i 出错解决_架构师成长之路:Kafka连接器深度解读之错误处理和死信队列...
  6. 苹果的水果忍者未能连接到服务器是怎么回事,水果忍者无法连接服务器如何解决...
  7. winform 线程 句柄不断增加_多线程讲解
  8. mysql over rank_总结几种MySQL中常见的排名问题
  9. php学生管理系统整理
  10. 算法java人工智能_人工智能用的编程语言是哪些?