STM32系统时钟RCC(基于HAL库)

摘要:
为什么有这么多时钟源:STM32系统很复杂,具有高精度、低精度、高速、低速等特点。它可以切换每个时钟源,并关闭不需要使用的时钟源。STM32系统时钟框图系统共有四个时钟源:lHSIRC:内部高速RC振荡器,与外部时钟源相比精度更低。通常用作RTC时钟源。LCSS是一个时钟监控系统。一旦HSE发生故障,它将自动切换到系统时钟作为内部高速RC振荡器时钟。

基础认识

为什么要有时钟:

时钟就是单片机的心脏,其每跳动一次,整个单片机的电路就会同步动作一次。时钟的速率决定了两次动作的间隔时间。速率越快,单片机在单位时间内所执行的动作将越多。时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令。时钟系统就是CPU的脉搏,决定cpu速率。

为什么这么多个时钟源:

STM32系统是复杂的,高精度、低精度、高速、低速等,且可以对每个时钟源进行开关操作,可以把不需要使用的关闭掉。这可以让单片机适用更多的环境中,把选择权利交个了开发者,开发者可以从精度、功耗、资源等多方面考虑。

STM32时钟:

从时钟源的角度可分为:

l  外部时钟(E)

l  内部时钟(I)

从时钟速率的角度分为:

l  高速时钟(HS)

l  低速时钟(LS)

STM32在芯片复位后默认选用的是内部的高速时钟(HSI)进行工作,如果需要使用外部高速时钟(HSE)的话需要经过软件操作相关的寄存器配置。

 外部时钟模式

外部的高速和低速时钟均有这三个可选项目,图中是CubeMX提供的外部时钟选择:

 STM32系统时钟RCC(基于HAL库)第1张

可选类型为

l  Disable(关闭,不使用外部时钟)

l  BYPASS Clock Source(旁路时钟源)

l  Crystal/Ceramic Resonator(外部晶体/陶瓷谐振器)

外部晶体/陶瓷谐振器模式

该模式较为常见,这可以为系统时钟提供较为精确的时钟源。该时钟源是由外部无源晶体与MCU内部时钟驱动电路共同配合形成,有一定的启动时间,精度较高。为了减少时钟输出的失真和缩短启动稳定时间,晶体/陶瓷谐振器和负载电容必须尽可能地靠近振荡器引脚。负载电容值必须根据所选择的晶体来具体调整。

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

旁路时钟源模式

该模式下必须提供外部时钟。外部时钟信号(50%占空比的方波、正弦波或三角波)必须连到SOC_IN引脚,此时OSC_OUT引脚对外呈高阻态。

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

旁路时钟源的典型应用--有源晶振

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

STM32系统时钟框图

STM32系统时钟RCC(基于HAL库)第2张

系统时钟源总共有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  时钟可以进行独立的开启和关闭

 STM32系统时钟RCC(基于HAL库)第3张

在STM32F103C8T6芯片中:

PC14和PC15是外部低速时钟的输入脚

PD0和PD1是外部高速时钟的输入脚

PA8是时钟输出引脚,输出的时钟可编程选择

通常外部高速和低速时钟输入脚在不使用的情况下也尽量不要作为普通独立IO使用

STM32系统时钟RCC(基于HAL库)第4张

 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库)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Vba实现解析json数据。当中的关于Set oSC = CreateObject("MSScriptControl.ScriptControl") 不能创建对象的问题。IDA Pro安装教程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mipi LCD 的CLK时钟频率与显示分辨率及帧率的关系【转】

本文转载自:http://blog.csdn.net/bmw7bmw7/article/details/45876487 我们先来看一个公式:Mipiclock = [ (width+hsync+hfp+hbp) x (height+vsync+vfp+vbp) ] x(bus_width) x fps/ (lane_num)/2 即mipi屏的传输时钟频...

AVR单片机教程——定时器中断

本文隶属于AVR单片机教程系列。   中断,是单片机的精华。 中断基础 当一个事件发生时,CPU会停止当前执行的代码,转而处理这个事件,这就是一个中断。触发中断的事件成为中断源,处理事件的函数称为中断服务程序(ISR)。 中断在单片机开发中有着举足轻重的地位——没有中断,很多功能就无法实现。比如,在程序干别的事时接受UART总线上的输入,而uart_sca...

Linux系统时间和硬件时间设置

在linux系统中有两个时间,硬件时钟和系统时间,硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。所有Linux相关指令与函数都是读取系统时钟的设定。因为存在两种不同的时钟,那么它们之间就会存在差异。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。 用date命令对系统时...

(stm32f103学习总结)—stm32定时器中断

一、定时器介绍STM32F1的定时器非常多,由2个基本定时器(TIM6、TIM7)、4个通 用定时器(TIM2-TIM5)和2个高级定时器(TIM1、TIM8)组成。基本定 时器的功能最为简单,类似于51单片机内定时器。通用定时器是在基本 定时器的基础上扩展而来,增加了输入捕获与输出比较等功能。高级定 时器又是在通用定时器基础上扩展而来,增加了可编程死区互...

关于PLC

学电气的一方面是单片机,一方面是PLC,,,,常常看到说选择比努力更重要,,单片机都很熟悉了,我就来介绍一下PLC..... 然后呢我先吹吹牛,,,目的是让大家相信我介绍的PLC绝对是亲身体验..... 吹牛开始: 首先:PLC适合学习能力强的人学习,PLC考验的是实际解决问题的能力,PLC和单片机不一样更多的是"使用"而非"开发" 自己呢大一的时候开始学...

stm32之PWM学习

下图是一个STM32普通PWM形成的图形原理说明 自动重装载寄存器(ARR)用于确定波形的频率(即周期)、捕获比较寄存器(CCRx)(用于确定占空比的) PWM的工作过程如下:首先ARR寄存器里面的值确定了一个PWM周期,就是我们上面举的那两个例子中的“1秒”(注意这个周期是在PWM系统初始化的时候写入ARR寄存器的,写入以后一般就不再改动了)。然后...