STM32系统时钟RCC(基于HAL库)
基础认识
为什么要有时钟:
时钟就是单片机的心脏,其每跳动一次,整个单片机的电路就会同步动作一次。时钟的速率决定了两次动作的间隔时间。速率越快,单片机在单位时间内所执行的动作将越多。时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令。时钟系统就是CPU的脉搏,决定cpu速率。
为什么这么多个时钟源:
STM32系统是复杂的,高精度、低精度、高速、低速等,且可以对每个时钟源进行开关操作,可以把不需要使用的关闭掉。这可以让单片机适用更多的环境中,把选择权利交个了开发者,开发者可以从精度、功耗、资源等多方面考虑。
STM32时钟:
从时钟源的角度可分为:
l 外部时钟(E)
l 内部时钟(I)
从时钟速率的角度分为:
l 高速时钟(HS)
l 低速时钟(LS)
STM32在芯片复位后默认选用的是内部的高速时钟(HSI)进行工作,如果需要使用外部高速时钟(HSE)的话需要经过软件操作相关的寄存器配置。
外部时钟模式
外部的高速和低速时钟均有这三个可选项目,图中是CubeMX提供的外部时钟选择:

可选类型为
l Disable(关闭,不使用外部时钟)
l BYPASS Clock Source(旁路时钟源)
l Crystal/Ceramic Resonator(外部晶体/陶瓷谐振器)
外部晶体/陶瓷谐振器模式
该模式较为常见,这可以为系统时钟提供较为精确的时钟源。该时钟源是由外部无源晶体与MCU内部时钟驱动电路共同配合形成,有一定的启动时间,精度较高。为了减少时钟输出的失真和缩短启动稳定时间,晶体/陶瓷谐振器和负载电容必须尽可能地靠近振荡器引脚。负载电容值必须根据所选择的晶体来具体调整。
整体上讲,陶瓷晶体和石英晶体的主要区别就在于精度和温度稳定性上。石英晶体比陶瓷晶体精度要高,温度稳定性要好。
旁路时钟源模式
该模式下必须提供外部时钟。外部时钟信号(50%占空比的方波、正弦波或三角波)必须连到SOC_IN引脚,此时OSC_OUT引脚对外呈高阻态。
所谓旁路模式,是指无需上面提到的使用外部晶体时所需的芯片内部时钟驱动组件,直接从外界导入时钟信号。
旁路时钟源的典型应用--有源晶振
有源晶振一般是四脚封装,电源、地线、振荡输出和一个控制端【或者悬空端】。相比无源晶体,有源晶振本身就是个完整的振荡器件,只需要供给适当的电源就能输出时钟,无须额外的振荡驱动匹配电路。其时钟输出不依赖于外部器件振荡电路,相对更不容易受外部线路不稳定性的影响。自然其价格往往要高于无源晶体,不过其输出电平幅度往往不能像无源晶体那样随着应用电路的变化而变化。
STM32系统时钟框图

系统时钟源总共有4个:
l HSI RC:内部高速RC振荡器,相比于外部精度较低。通常约为8MHZ。通常作为系统的备用时钟源(CSS控制)
l LSI RC:内部低速RC振荡器,相比于外部精度较低。通常约为40KHZ。通常作为看门狗时钟源。
l HSE:外部高速时钟,精度高,可接外部晶体/陶瓷谐振器或旁路时钟源。范围为4MHZ-16MHZ。通常通过PLL倍频作为系统时钟源。
l LSE:外部低速时钟,精度高,可接外部晶体/陶瓷谐振器或旁路时钟源。通常为32.768KHZ。通常作为RTC时钟源。
其它:
l 其中SYSCLK是系统时钟,对于每个芯片都有规定最大的系统时钟是多少,超过则会出现错误。芯片的很多外设都是基于该时钟的。
l CSS为时钟监视系统,一旦HSE失效则自动切换至系统时钟(SYSCLK)为内部高速RC振荡器时钟(HSI)。
l MCO是时钟输出引脚,对应单片机的一个GPIO口,可以选择输出SYSCLK、HSI、HSE、PLLCLK/2的其中一个。
l 时钟可以进行独立的开启和关闭

在STM32F103C8T6芯片中:
PC14和PC15是外部低速时钟的输入脚
PD0和PD1是外部高速时钟的输入脚
PA8是时钟输出引脚,输出的时钟可编程选择
通常外部高速和低速时钟输入脚在不使用的情况下也尽量不要作为普通独立IO使用

STM32F103C8T6的时钟配置图:
l LSE外部低速时钟的频率为32.768KHZ,给系统的RTC做为时钟源
l LSI内部低速时钟的频率为40KHZ,给系统的独立看门狗作为时钟源
l HIS内部高速时钟暂时没有用到,频率为8MHZ,但是值得注意的是“CSS Enabled”与“Enable CSS”的区别,前者表示开启了。
l “CSS Enabled”表示开启了时钟监视系统,一旦HSE失效则自动切换至系统时钟(SYSCLK)为内部高速RC振荡器时钟(HSI)
l HSE选择的是8MHZ,可以选择的范围为4-16MHZ
l 系统时钟(SYSCLK)为72MHZ。时钟来源是HSE经过PLL倍频
l MCO时钟输出选择的是PLLCLK/2,按照时钟选择可以理解为是SYSCLK/2,即72MHZ/2=36MHZ
STM32系统时钟RCC(基于HAL库)的更多相关文章
- STM32 GPIO输入输出(基于HAL库)
一.基础认识 GPIO全名为General Purpose Input Output,即通用输入输出.有时候简称为"IO口".通用,说明它是常见的.输入输出,就是说既能当输入口使用 ...
- Keil MDK STM32系列(七) STM32F4基于HAL的PWM和定时器
Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...
- 【GMT43智能液晶模块】基于HAL库的SDRAM和LCD驱动例程(MDK工程&CubeMX工程)
说明: 1.该工程基于HAL库实现动态存储器SDRAM驱动以及液晶控制器LCD驱动. 2.工程通过STM32CubeMX(Version 4.22.0)配置生成,可直接打开进行配置. 3.KEIL M ...
- STM32基于HAL库通过DMA读写SDIO
通过STM32CUBEMX生成DMA读写sdio的工程,再读写过程中总会卡死在DMA中断等待读写完成的while中,最终发现while等待的标志在SDIO的中断里置位的,而SDIO中断优先级如果小于或 ...
- STM32串口接收中断——基于HAL库
写在前面 最近需要使用一款STM32L4系列的芯片进行开发,需要学习使用HAL库.在进行串口中断使用的时候遇到了一些小麻烦,写下解决方案供大家参考. 1.UART相关的头文件引用错误 由于本人直接使用 ...
- 基于HAL库的STM32的DSP库详解(附FFT应用)
1 . 建立工程,生成代码时选择包含所有库. 2. 打开 option for target 选择 Target 标签,在code generatio中,将floating point hardw ...
- STM32 定时器详细篇(基于HAL库)
l 16位的向上.向下.向上/向下(中心对齐)计数模式,支持自动重装载 l 16位的预分频器 l 每个定时器都有多个独立通道,每个通道可用于 * 输入捕获 * 输出比较 * PWM输出 * ...
- Keil MDK STM32系列(八) STM32F4基于HAL的PWM和定时器输出音频
Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...
- STM32系统时钟为什么没有定义呢
对于使用3.5版本库开发的STM32学习者 有时候不清楚为什么没有时钟定义 那么我们就简单的讲解下吧: 1,函数从启动文件开始运行(汇编文件) 2,若是hd.s 请看151行LDR R0, = ...
随机推荐
- Python_opencv库
1.车牌检测 ''' 项目名称:opencv/cv2 车牌检测 简介: 1.训练级联表 ***.xml [跳过...] 2.用如下代码加载级联表和目标图片识别车牌 注:推荐用anconda安装open ...
- Vue 计算属性与方法
computed 基本使用 如果数据需要有复杂的计算,则可以在Vue实例中定义计算属性,再交由mustache进行渲染. computed内部其实是通过getttr实现的,所以不用加括号即可完成其下方 ...
- 苹果电脑下载器Folx迷你窗口有什么用途
苹果电脑下载器Folx的迷你窗口功能,及时地了解不同任务的下载进度.另外,也可以通过带宽活动窗口了解任务的占用带宽情况,以便及时限制过多的带宽占用.接下来,一起来看看如何操作吧. 图1:软件界面 一. ...
- 使用Sidechain EQ优化FLStudio的贝斯和底鼓
混音的目标之一是平衡各个声音的音量.当两个声音占据相同的频率范围时,有时就比较难处理.这是贝司和底鼓之间经常会碰到的情况.很多时候我们会使用压缩(compression)来降低他们的音量. 然而,有 ...
- 对JVM的一个基础了解
1.JVM范围 2.JVM和class文件 (1).JVM和Java语言无关,JVM是一种规范,任何语言只要能编译成class文件格式都能在JVM上运行 3.class文件格式 (1).class文件 ...
- 通过python基于netconf协议获取网络中网元的配置数据,助力企业网络控制自动化轻松实现!
摘要:在当今信息化时代,大多数企业都需要网络支撑企业的ICT运行,提升企业运行效率,针对企业网络中的网元设备(包括交换机,路由器,防火墙等),很多企业希望根据自身的业务特点定制网络管理,比如可以实现网 ...
- MarkDown使用之LaTeX表示数学公式
对于文本排版格式,对于\(Microsoft\,Word\)来说,功能尽全,可调的参数十分多,人们可能会将不少的时间放在具体的文字大小.实现样式.而\(markdown\)语法能够让人们通过符号去替代 ...
- go创建动态库
*nix *nix创建so比较方便,写好go代码之后,直接一条命令搞定. go build -buildmode=c-shared -o libgobblob.so 命令执行之后,会生成libgobb ...
- HEXO & CARDS主题进阶配置
我想对于建立一个网站而言,第一步要能够做到正常在线访问以及定期产出一定的内容, 其实当网站建立好那一刻,这第一步已经算是完成了,不过我在此基础之上做了些扩展 在默认的card主题之上,我设置了标签.分 ...
- Mysql命令、常用函数
一.sql命令行 查看数据库 show database : 选择使用的数据库 use 数据库名 : 查看表 show tables ; 查询表 select * from 表名 高版本my ...