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, = ...
随机推荐
- switch,case语句易误区
switch case 语句语法格式如下: switch(expression){ case value : //语句 break; //可选 case value : //语句 break; //可 ...
- Redis在springboot项目的使用
一.在pom.xml配置redis依赖 <!-- redis客户端代码 --> <dependency> <groupId>org.springframework. ...
- 测试_QTP简介
一:什么是QTP? QTP(QuickTest Professional)是一款自动化测试工具,自动化测试就是利用计算机模拟人进行测试,也就是开发一套代码测试另一套代码. QTP主要用它来执行重复的手 ...
- python实现祝福弹窗
接下来教大家怎么用python献上满满的祝福.首先给大家看一下最终模样. 注:密集恐惧症患者勿入! 模样大家已经看见了,首先想想一下,当朋友打开你发送过去的软件, 然后点击运行,结果,一个一个的窗口慢 ...
- RTP协议解析及H264/H265 音视频RTP打包分析
一 概述 实时传输协议(Real-time Transport Protocol或简写RTP)是一个网络传输协议,它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的. RTP协议详 ...
- linux centos 6.x 装机后基本优化
1.关闭SELinux /etc/selinux/config配置文件内替换 se -i 's/SELINUX=enforcing/SELINUX=disabled/g'需要重启grep SELINU ...
- python的pip快速安装代码
pip install xx,经常由于网速,或者安装版本问题导致安装速度慢超时等问题, 现提供一个py镜像安装代码,安装库文件前执行下这个程序,可以很快下载 cmd 进入命令提示符 python .p ...
- MySQL数据库 | MySQL调优|MySQL底层原理|MySQL零基础新手教程
MySQL数据库安装 一.Windows 环境下安装 A.下载 MySQL Select Operating System: Microsoft Windows 快捷下载:mysql-8.0.22-w ...
- Linux标准输入、标准输出、错误输出
Linux中的输入文件.输出文件.错误输出 文件名称 文件描述符 标准输入 0 (默认是键盘) 标准输出 1 (默认是屏幕) 标准错误 2 (默认是屏幕) 输出重定向 Linux中&表示后台运 ...
- DocView 现在支持自定义 Markdown 模版了!
前言 有小伙伴反馈说希望可以自定义 Markdown 模版,这样就可以导出自己想要的样式了!这个功能可以有,毕竟大家不可能都生成一模一样的文档.现在来一起看看如何实现自定义模版吧! 设置模版 Sett ...