其他分享
首页 > 其他分享> > STM32之复位和时钟控制(RCC)

STM32之复位和时钟控制(RCC)

作者:互联网

一、复位

STM32复位电路如图所示:在这里插入图片描述
复位分为3种形式,即电源复位、系统复位和备份区域复位。
当系统上电、掉电及从待机模式返回时,发生电源复位。电源复位除备份区域的寄存器外所有的寄存器。
系统复位将复位除时钟控制寄存器CSR中的复位标志和备份区域中的寄存器外的所有寄存器。当在NEST引脚上产生一个低电平,系统复位发生,即通过按复位按钮可以引发复位。另外,当看门狗定时器计数终止时,包括窗口看门狗(WWDG)和独立看门狗(IWDG)计数终止,会产生复位。另外,软件复位和低电压也会导致系统复位。
对于备份区域的复位,一种是在软件复位的时候设定备份区域控制寄存器中的对应位就产生,一种是当电源和电池都掉电,又重新上电时产生。
这里简单介绍备份区域寄存器BKP。BKP是由42个16位寄存器组成,可以储存84b的用户程序数据,由于处于备份区域,所以当系统掉电时,可以由电池供电,当系统复位或电源复位的时候,不会丢失数据。

二、时钟源

STM32有高速和低速两种内部时钟,另外可以外接高速(HSE)和低速(LSE)两组外部时钟。STM32内部有高速内部(HSI)RC振荡器和低速内部(LSI)RC振荡器两种,产生两组时钟信号。HSI振荡器输出频率典型值是8MHz,精度典型值是1%,最差值是2.5%。如果要求高精度,不能采用片内,一般都会选择外部时钟源。输出频率典型值是40kHz,最小值是30kHz,最大值是60kHz。
HSE频率的取值范围在0~25MHz,精度取决于选择的晶体振荡电路。LSE频率的取值范围在0~1000kHz,为生成精确的串行异步通信波特率,一般频率典型值为32.768kHz。外部时钟通常由晶体振荡器产生,典型的晶体振荡电路如图所示。
在这里插入图片描述
晶体振荡电路都是典型的,可以参考芯片数据手册。
通常,STM32主频在72MHz,而外部时钟选择8MHz,因此,必须通过倍频获得。通过PLL,将外部输入时钟HSE的8MHz时钟倍频9倍,才能得到72MHz的时钟。倍频数,是可编程的,对时钟控制寄存器进行编程即可。
要想了解STM32的时钟,必须要对时钟树有所了解,如图所示,STM32的时钟树。
在这里插入图片描述
时钟树中,锁相环PLL的输入源可以是HSI(高速内部时钟信号)的2分频或HSE(高速外部时钟信号)或HSE的2分频。HSI精度较低,一般选择HSE。典型频率值是8MHz。锁相环PLL对选择的时钟进行倍频后,输入的时钟为PLLCLK(PLL时钟)的典型频率值是72MHz,PLLCLK一路被直接送给USB预分频器产生USB时钟:USECLK(7)另一路输入系统时钟选择器。
系统时钟选择器从HSE、PLLCLK、HSI者中选择一个作为SYSCLK(系统时钟)当系统复位的时候,HSI被选择为系统时钟,但是HSI精度低,所以一般通过写时钟控制器寄存器,将PLLLCLK时钟作为系统时钟,将HSE倍频从72MHz变为PLLCLK,再选择PLLCLK作为系统时钟,那么SYSCLK的频率值也就是72MHz。
SYSCLK通过一个选通器,可作为两路I2S时钟。
SYSCLK通过AHB预分频器,进行预分频,产生AHB时钟HCLK,一般将预分频值设置为1,也就是不进行分频。因此HCLK值一般就是72MHz。在外设时钟被使能的情况下,AHB预分频时钟送到AHB总线,称为AHB时钟。
当SDIO时钟被使能,AHB时钟HCLK被选择作为SDIO时钟。当FSMC时钟被使能,AHB时钟HCLK被选择作为FSMC时钟。
AHB时钟HCLK被8分频后送内核,为STCLK,不分频送内核,为FCLK。SYSTICK系统定时器可以选择STCLK或FCLK为其时钟。FCLK为供给CPU内核的时钟信号,所谓CPU主频为XXMHz,就是指的这个时钟信号,相应的,倒数1/FCLK即为CPU时钟周期。
APB是低速外设总线,AHB时钟再通过APB,预分频器进行分频,产生低速时钟,在APB外设被使能的情况下送到APB总线。APB总线有APB1和APB2,因必有两个APB预分频器。可以通过设置分频,设置其频率。APB1时钟为PCLK1,APB2时钟为PCLK2。
定时器2~7的时钟TIMXCLK是APB1时钟或其2倍,可编程。定时器1和定时器8的时钟TIMxCLK是APB2的时钟或其2倍,可编程。要使用定时器1,需先打开APB2时钟,然后使能定时器1时钟;要使用定时器2,需先打开APB1时钟,然后使能定时器2时钟。
ADC的时钟ADCCLK也是通过APB2进行分频获得。因此要使用ADC,需使能APB2时钟和ADC时钟。
HCLK的2分频送SDIO的AHB端口。
实时时钟RTCCLK可以由HSE的128分频、LSE时钟或LSI时钟提供。
看门狗时钟IWDGCLK使能内部低速时钟LSI。
MOC引脚可以选择PLLCLK、SYSCLK、HSI、HSE之一作为时钟输出。
通过时钟树,STM32时钟的来龙去脉就很清晰了,通过编程可以对其中的选择器、分频器进行设置,以获得理想的结果。通过对时钟管理寄存器的配置就可以完成这些配置工作,始终管理寄存器在系统中非常重要。

三、时钟管理寄存器

时钟管理寄存器,包括时钟控制寄存器(RCC_CR)、时钟配置寄存器(RCC_CFGR)、时钟中断寄存器(RCC_CIR)。
时钟控制寄存器(RCC_CR)用来使能外部时钟和内部时钟,使能PLL功能;在各种时钟就绪时置位其中的就续标志;并可配置内部时钟的校准和设置偏移量。
时钟配置寄存器(RCC_CFGR)配置哪个时钟作为系统时钟SYSCLK,并显示当前是哪个时中元作为系统时钟;配置AHB、APB、AD的预分频,即配置AHB、APB、ADC的时钟频率,选择PLL的时钟源,设置其倍频系数;选择STM32输出脚MCO的时钟源。
时钟中断寄存器(RCC_CIR)设置PLL、HSE、HSI、LSE、LSI就绪中断使能,清除PLL、HSE、HSI、LSE、LSI就绪中断标志。
时钟控制寄存器(RCC_CR)、时钟配置寄存器(RCC_CFGR)、时钟中断寄存器(RCC_CIR)详细见STM32参考手册。寄存器级别编程时需查看。

标签:AHB,分频,HSE,复位,STM32,寄存器,RCC,时钟
来源: https://blog.csdn.net/aricchen77/article/details/115667482