从时钟源的角度,分为两类外部时钟(E)和内部时钟(I)。

从时钟速率的角度,分为两类高速时钟(HS)和低速时钟(LS)。
而把它们组合起来就有四种时钟:HSE、HIS、LSE、LSI。至于为什么会有这么复杂的时钟配置,主要是考虑到系统的性能和功耗两个方面的因素吧。单一时钟的话可能会导致性能过剩并且功耗过高。多个时钟的话可以平衡功耗和性能之间的平衡。
特此说明一下,系统复位后,默认初始化的是HIS时钟提供sysclock。也就是16MHZ。为了提示系统性能,我们需要使能外部时钟晶振(板载25MHz)。使能后也明显可以看出来芯片的温度升高了(使用内部的温度传感器测试,在后续有图片为证)。
这四类时钟在芯片内部通过配置,完成对各个外设的驱动。到了芯片内部,对应到那么多的外设,时钟的分类就更多了,但是主要考虑到桥的存在,分为五类:AHB3、AHB2、AHB1、APB2、APB1。芯片内的所有外设都分别挂载在这五个总线上,至于哪个外设挂歪在哪个总线上,我们就需要查看芯片的RM0410 Reference manual(Page74)了。
今天为了测试时钟的配置,我就用通用定时器TIM2做下示范操作:
首先查看TIM2挂载在哪条总线:
可知挂载在APB1总线上。

接着就可以查看TIM的时钟回路

不论STM8还是STM32系列的MCU,芯片复位后默认时钟源都是内部HSI,要使用外部时钟源HSE的话,得通过软件对相关控制寄存器进行使能配置才行。

    如果使用外部HSE的话,一般有两种模式:

 

1、外部晶体/陶瓷谐振器(HSE晶体)模式

    这种模式用得比较常见,HSE晶体可以为系统提供较为精确的时钟源。在时钟控制寄存器RCC_CR中的HSERDY位用来指示高速外部振荡器是否稳定。在启动时,直到这一位被硬件置’1’,时钟才被释放出来。HSE晶体可以通过设置时钟控制寄存器里RCC_CR中的HSEON位被启动和关闭。

    该时钟源是由外部无源晶体与MCU内部时钟驱动电路共同配合形成,有一定的启动时间,精度较高。为了减少时钟输出的失真和缩短启动稳定时间,晶体/陶瓷谐振器和负载电容必须尽可能地靠近振荡器引脚。负载电容值必须根据所选择的晶体来具体调整。手册里明确地写明了这句,很多时候似乎被无视了。关于这点,ST官方有专门出了个应用笔记,编号为AN2867。可以去www.stmcu.com.cn 或者www.st.com 搜索下载。

    整体上讲,陶瓷晶体和石英晶体的主要区别就在于精度和温度稳定性上。石英晶体比陶瓷晶体精度要高,温度稳定性要好。

2、外部时钟源(HSE旁路)模式

    该模式下必须提供外部时钟。用户通过设置时钟控制寄存器中的HSEBYP和HSEON位来选择这一模式。外部时钟信号(50%占空比的方波、正弦波或三角波)必须连到SOC_IN引脚,此时OSC_OUT引脚对外呈高阻态。

    所谓HSE旁路模式,是指无需上面提到的使用外部晶体时所需的芯片内部时钟驱动组件,直接从外界导入时钟信号。犹如芯片内部的驱动组件被旁路了。

    不过,在使用该模式时,经常有人出现配置错误,即使用跟HSE晶体模式一样的配置。这点在STM8/STM32应用中都有人发生。 所幸的是使用这个旁路模式的情形不像使用外部晶体模式那么多,不然可能更多人在这里遇到麻烦。

    我们不妨以STM3F4系列芯片为例。

    关于寄存器位上面已经提到了,旁路模式除了配置HSEON还得配置HSEBYP位。

    对于标准库函数voidRCC_HSEConfig(uint32_t RCC_HSE)

    或CUBE库函数__HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState)里的相关参数可能是:RCC_HSE_ON、 RCC_HSE_Bypass或RCC_HSE_OFF的其中之一。

    如果使用STM32CUBEMX图形配置界面的话可以看到3个选项:

    在ST MCU应用开发中,常有人会用到有源晶振作为时钟源。如果用它该选择哪种工作模式呢?

    有源晶振一般是四脚封装,电源、地线、振荡输出和一个控制端【或者悬空端】。相比无源晶体,有源晶振本身就是个完整的振荡器件,只需要供给适当的电源就能输出时钟,无须额外的振荡驱动匹配电路。其时钟输出不依赖于外部器件振荡电路,相对更不容易受外部线路不稳定性的影响。自然其价格往往要高于无源晶体,不过其输出电平幅度往往不能像无源晶体那样随着应用电路的变化而变化。

    不难看出,如果使用有源晶振作为外部时钟源的话,我们应该配置为HSE旁路模式,而不是HSE晶体模式。将有源晶振的输出脚接到MCU的OSC_IN脚。
---------------------
作者:无语僧314
来源:CSDN
原文:https://blog.csdn.net/wuyusheng314/article/details/78947096
版权声明:本文为博主原创文章,转载请附上博文链接!

STM32F7系列时钟相关问题:HSE模式配置(旁路模式、非旁路模式的更多相关文章

  1. LVS三种模式配置及优点缺点比较

    目录: LVS三种模式配置 LVS 三种工作模式的优缺点比较 LVS三种模式配置 LVS三种(LVS-DR,LVS-NAT,LVS-TUN)模式的简要配置 LVS是什么: http://www.lin ...

  2. LVS三种模式配置及优点缺点比较 转

    LVS三种模式配置及优点缺点比较   作者:gzh0222,发布于2012-11-12,来源:CSDN   目录: LVS三种模式配置 LVS 三种工作模式的优缺点比较 LVS三种模式配置 LVS三种 ...

  3. 深入 CSocket 编程之阻塞和非阻塞模式

    有时,花上几个小时阅读.调试.跟踪优秀的源码程序,能够更快地掌握某些技术关键点和精髓.当然,前提是对这些技术大致上有一个了解. 我通过几个采用 CSocket 类编写并基于 Client/Server ...

  4. -_-#【userAgent】极速模式与非极速模式存在差异

    UC浏览器 Android 极速模式 UC浏览器 Android 非极速模式

  5. ORACLE归档模式和非归档模式的利与弊

    转: 在Oracle数据库中,主要有两种日志操作模式,分别为非归档模式与归档模式.默认情况下,数据库采用的是非归档模式.作为一个合格的数据库管理员,应当深入了解这两种日志操作模式的特点,并且在数据库建 ...

  6. XCode工程中ARC模式与非ARC模式共用(转)

    Xcode 项目中经常会融合一些老的代码,它们可能采用非ARC的模式.混合编译时,就会碰到编译出错的情况. 如何共用ARC模式和非ARC模式呢? XCode除了提供整个项目是否使用ARC模式的选择外, ...

  7. 【bug】【userAgent】极速模式与非极速模式存在差异

    UC浏览器 Android 极速模式 UC浏览器 Android 非极速模式

  8. python 正则表达式与JSON-正则表达式匹配数字、非数字、字符、非字符、贪婪模式、非贪婪模式、匹配次数指定等

    1.正则表达式:目的是为了爬虫,是爬虫利器. 正则表达式是用来做字符串匹配的,比如检测是不是电话.是不是email.是不是ip地址之类的 2.JSON:外部数据交流的主流格式. 3.正则表达式的使用 ...

  9. 面试侃集合 | SynchronousQueue非公平模式篇

    面试官:好了,你也休息了十分钟了,咱们接着往下聊聊SynchronousQueue的非公平模式吧. Hydra:好的,有了前面公平模式的基础,非公平模式理解起来就非常简单了.公平模式下,Synchro ...

随机推荐

  1. (二)Struts2配置文件

    一.web.xml文件 web.xml配置文件是一种J2EE配置文件,决定servlet容器的HTTP元素需求如何进行处理.它严格来说不是一个Struts2 配置文件,但它是Struts2 运作所需要 ...

  2. hbuilderX打包苹果证书的申请方法

    现在uniapp越来越火,hbuilderX和apicloud这些工具使用html+js语言就可以开发强大的app,大大降低了app开发的技术门槛. hbuilderX或apicloud在打包ios应 ...

  3. Maven导入依赖慢解决办法

    新安装的Maven,下载jar包速度会很慢,因为官方的库在国外, 连上并下载速度很慢. 因为maven是支持镜像的,我们就可以本地maven目录下的的conf目录下的setting.xml文件中找到标 ...

  4. kubernetes资源优化

    kubernetes资源优化方向 系统参数限制 设置系统内核参数: vm.overcommit_memory = 0 vm.swappiness = 0 sysctl -p #生效 内核参数overc ...

  5. 【新手指南】Android Studio中应用App的相关配置

    前言: 注意这是一个对于Android开发入门学习者而言的一个教程,因为自己平时很少使用Android进行原生应用的开发,对于使用Android Studio配置Android App应用的一些参数( ...

  6. 文档翻译第002篇:Process Monitor帮助文档(Part 2)

    [筛选与高亮显示] Process Monitor提供了一些方式来配置筛选器和高亮显示.         筛选器的包含与排除 您可以在筛选器中指定事件的属性,这样就可以令Process Monitor ...

  7. hdu3074 线段树求区间乘积(单点更新)

    题意:       给你n个数,两种操作,(1) 把第b个数改成c (2)算出b-c的乘积,结果对1000000007取余. 思路:       线段树单点更新,简单题目,不多解释,具体看代码. #i ...

  8. YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

    0x01 前言 srbac的原理: YII框架的srbac模块是一个专门管理权限的一个模块,那它是怎么管理权限的呢.我们知道YII框架的网页显示是由控制器实现的,控制器继承父类CController和 ...

  9. POJ2060最小路径覆盖

    题意:       有n个任务,如果时间来得及干完某些任务后还可以接着干别的任务,给一个任务清单,问最少派出去多少人能完成所有任务. 思路:        比较简单的追小路径覆盖问题了,在DAG中找到 ...

  10. 【antd Vue】封装upload图片上传组件(返回Base64)

    最近需要把上传的图片信息存储到数据库,以base64的方式,需要重新封装一下antd的upload组件 1. 使用方法 引入组件然后配置一下即可使用,配置项包括 defaultImageList,需要 ...