RCC是reset clock control的简称(即复位和时钟控制器),本文将详细介绍时钟树的构成,通过理解时钟树我们可以更加的了解STM32的所有时钟来源和他们之间的关系。
如下图,是STM32的时钟树,非常重要,我们将对每个时钟进行讲解,读者理解后时钟树看起来将会变得很简单。
建议保存下图,边阅读本文边对照时钟树,可以达到事半功倍的效果。
1.HSE高速外部时钟
HSE是高速外部时钟新号,可以由有源晶振和无源晶振提供,频率范围4-16MHZ。使用有源晶振,时钟从OSC_IN引脚进入,OSC_out引脚悬空;当使用无源晶振是,时钟信号由OSC_IN和OSC_OUT进入,且需要谐振电容。
当确定PLL时钟来源为HSE时,可以选择HES不分频或者2分频作为PLL时钟源。
2.PLL时钟源
PLL时钟源有两个,一个是HSE,另外一个是HSI/2。HSI是高速内部时钟信号,频率为8M,该信号源会随着温度和环境会有所漂移,一般不作为PLL的时钟来源。
3.PLL时钟PLLCLK
通过设置PLL倍频因子,可以对PLLSRC进行倍频。72M是ST官方推荐的稳定运行时钟,最高为128M。
4.系统时钟SYSCLK
系统时钟来源可以是HSI、PLLCLK、HSE。
5.AHB总线时钟HCLK
SYSCLK经过AHB预分频之后得到时钟叫APB总线时钟,即HCLK。片上的绝大部分外设的时钟都是经过HCLK分频得到。
6.APB1总线时钟HCLK1
APB1总线时钟PCLK1由HCLK经过低速APB预分频器得到的。HCLK1属于低速总线时钟,最高为36M,低速片上外设就挂载到这条总线上,比如USART2/3/4/5、SPI2/3,、I2C1/2。
7.APB2总线时钟HCLK2
APB2总线时钟HCLK2由HCLK经过高速APB2预分频器得到的。HCLK2属于高速的总线时钟,片上高速外设就挂载到这条总线上,比如全部的GPIO、USART1、SPI1。
8.其他时钟
USB时钟
USB时钟是由PLLCLK经过USB预分频器得到,USB最高时钟是48M。USB对时钟要求比较高,所以PLLCLK只能是HSE倍频得到,不能使用HSI倍频。
Cortex时钟
Cortex系统时钟是由HCLK 8分频得到的,Cortex系统时钟用来驱动内核的系统定时器SYSTick,SysTick一般用于操作系统的时钟节拍,也可以做普通的定时。
ADC时钟
ADC时钟由PCLK2经过ADC预分频器得到,ADC最高时钟是14M。
RTC时钟、独立看门狗时钟
RTC时钟由HSE/128分频得到,也可以由低速外部时钟LSE提供,频率为23.768KHZ,也可以由低速外部时钟HSI提供。
独立看门狗的时钟只能由LSI提供,频率为30-60KHZ,一般取40KHZ。
MCO时钟输出
MCO是microcontroller clockoutput的缩写,是微控制器时钟输出引脚,主要作用是对外提供时钟,相当于一个有源晶振。MCO的时钟来源可以是PLLCLK/2,HSI,HSE,SYSCLK。
可以通过监控MCO引脚的时钟输出来验证我们的系统时钟是否配置正确。
9.HSI使用
当HSE作为PLL时钟来源时候,如果HSE发生故障,不仅HSE不能使用,PLL也会关闭,这个时候系统会自动切换HSI作为系统时钟,此时SYSCLK=HSI=8M,这个时候如果没有开启CSS和CSS中断时候,系统只能在低速率运行,跟瘫痪没什么区别。
如果HSE故障时候,CSS中断里采取补救措施,使用HSI,把系统时钟设置为更高,最高是64M,频率够用了,但是与原来频率(比如72M)不一致,外设时钟也跟着改变,那么外设工作也会被打乱,这时候我们设置HSI时钟时候也跟着改变各个分频因子,使得外设时钟跟故障之前一样,但是毕竟不能一直使用HSI,所以HSE故障时应该采取报警措施。
上一篇:STM32系统定时器-SysTick
下一篇:STM32 GPIO的输入输出-HAL库
推荐阅读最新更新时间:2024-11-12 10:48