STM32 RCC分析与使用

STM32RCC分析与使用
由于STM32系列微控制器系统比较复杂,时钟系统也相对于普通MCU更多样化,这加大了我们设计程序和学习的难度。比如普通的MCU延时程序,我们直接可以使用“for循环”或者“while”来轻易实现;而在Cortex核的STM32系列微控制器上则不行:因为无法判断当时的时钟频率,做不到精确的延时。如果详细地了解其时钟系统后,我们知道可以使用SYSCLK来实现精确延时。RCC的学习可以说没有实验,但所有的模块都会用到时钟,我们进行I/O口的初始化,配置函数中第一行代码一般都是对时钟的初始化,足可见其重要性。一般而言,要是真正理解了STM32中所有的时钟,学习其他外设都是易如反掌了.
实验要求
以SystemInit()函数为突破口的情况下,深入了解STM32时钟的初始化流程。
实验目的
学习STM32系列的时钟设置.
硬件分析
时钟树
在STM32系统中,共有五个时钟源,分别为HSE、HSI、LSE、LSI、PLL。由图可以看出,HSI和LSI为片内RC振荡器,HSI为8MHz而LSI为32KHz;HSE和LSE为外部时钟源;PLL则需要HSE和HSI来提供时钟。
(1)HSE:高速外部时钟信号
可以通过外部直接提供时钟,从OSC_IN输入,或使用外部陶瓷/晶体谐振器。外部直接提供的时钟可以达到25MHz,用户可以通过设置时钟信号控制寄存器RCC_CR中的HSEBYP和HSEON位来选择该模式。此时OSC_OUT引脚为高阻状态。
(2)HSI:高速内部时钟信号
该时钟通过8MHz的内部RC振荡器产生,并且可被直接用做系统时钟,或者经过2分频后作为PLL的输入。它比HSE有更快的启动时间,但频率精确度没有外部晶体振荡器高。而且根据制造工艺的不同,不同芯片之间的RC振荡器频率也是不同。出厂时,每个设备频率已被校准至1%(25摄氏度)。出厂校验值被装载到时钟控制寄存器RCC_CR 的HSICAL[7:0]位。在不同的电压或者温度下,可以通过R
小叶黑柴胡
CC_CR中的HSITRIM[4:0]位来调整HSI的频率。并可以通过时钟控毒素
制寄存器RCC_CR的HISON位打开或者禁用。
沙扬娜拉赏析
(3)LSE:低速外部时钟信号
振荡器是一个32.768KHz的低速外部晶体/陶瓷振荡器,它可以向RTC提供高精准时钟。
LSI:低速内部时钟信号振荡频率为32KHz左右(30-60KHz之间)。
(5)PLL:锁相环倍频输出
其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。
系统时钟(SYSCLK)
系统时钟SYSCLK是供STM32中绝大部分部件工作的时钟源。系统时钟可选择为PLL输出、HSI或者HSE。HSI与HSE 可以通过分频加至PLLSRC,并由PLLMUL进行倍频后经选择直接充当SYSCLK。PLLCLK经1.5分频或1分频后为USB 串行接口引擎提供一个48MHz的振荡频率。即当需要使用USB时,
PLL必须使能,并且时钟频率配置为48MHz或者72MHz。但这并不意味着USB模块工作时需要48MHz,48MHz仅提供给USB串行接口引擎(SIE),而USB模块工作是由APBH1提供的。
特雷诺指数系统时钟最大频率为72MHz,它通过AHB分频器分频后送给各模块使用,AHB分频器可选择1、2、4、8、16、64、128、256、512分频。
AHB分频器输出的时钟送给5大模块使用:
(1)送给AHB总线、内核、内存和DMA使用的HCLK时钟。
(2)通过8分频后送给Cortex的系统定时器时钟。
(3)直接送给Cortex的空闲运行时钟FCLK。
(4)送给APB1分频器。APB1分频器可选择为1、2、4、8、16分频,其输出中一路供APB1外设使用(PCLK1,最大频率36MHz);另一路送给定时器(Timer)2、3、4的倍频器使用(TIMXCLK),该倍频器可选择1或者2倍频,输出供定时器2、3、4使用。
甲醛酯
(5)送给APB2分频器。APB2分频器可供选择为1、2、4、8、16分频,其输出一路供APB2外设使用(PCLK2,最大频率72MHz);一路送给定时器(Timer)1的倍频器使用(TIM1CLK),该倍频器可选
择1或者2倍频,输出供定时器1使用;另外,APB2分频器还有一路输出供ADC分频器使用,分频后送给ADC模块使用,ADC分频器可选择为2、4、6、8分频。
时钟安全系统(CSS)
图中在SYSCLK选择端下方有个CSS模块,CSS是一个时钟安全系统,用来保证系统时钟在HSE失效时能继续工作。时钟检测器在HSE振荡器启动延时后被使能,并当振荡器停止时禁用。如果在HSE振荡器时钟上检测到一个失效,这个振荡器将被自动禁用;一个时钟失效事件打断TIM1高级控制定时器的输入,并且产生一个中断来通知软件该次失效,使得MCU能够进行补救措施。
系统时钟输出(MCO)
图的左下方为系统时钟输出(MCO)模块。使得时钟能够输出到外部MCO引脚,相关的GPIO端口的配置寄存器必须被编程为复用功能模式。下面4个时钟的任意一个可被选作MCO时钟:
(1)SYSCLK
(2)HIS
(3)HSE
(4)2分频的PLLCLK
可通过时钟配置寄存器RCC_CFGR的MCO[2:0]位进行选择。
几点说明:
(1)在以上的时钟输出中,有很多是带使能控制端的(如图中的Peripheral Clock Enable),例如AHB总线时钟、内核时钟、各种APB1外设、APB2外设等等。当需要使用某模块时,记得一定要先使能对应的时钟。
(2)需要注意的是定时器的倍频器,当APB的分频为1时,它的倍频值为1,否则它的倍频值就为2。
(3)连接在APB1(低速外设)上的设备有:电源接口、备份接口、CAN、USB、I2C1、I2C2、UART2、UART3、SPI2、窗口看门狗、Timer2、Timer3、Timer4。
(4)连接在APB2(高速外设)上的设备有:UART1、SPI1、Timer1、ADC1、ADC2、所有普通IO口(PA~PE)、第二功能IO口。
(5)如果独立的看门狗(IWDG)被硬件选项或者软件访问启动了,LSI振荡器将被强制打开,并且不能被禁用,在LSI振荡器开始工作后,它的时钟被提供给IWDG。
茶杯门STM32F10xxx支持三种复位形式,分别为系统复位、上电复位和备份区域复位。
系统复位
除了时钟控制器的RCC_CSR寄存器中的复位标志位和备份区域中的寄存器(见上图)以外,系统复位将复位所有寄存器至它们的复位状态。
当发生以下任一事件时,产生一个系统复位:
1.NRST引脚上的低电平(外部复位)
2.窗口看门狗计数终止(WWDG复位)
3.独立看门狗计数终止(IWDG复位)
4.软件复位(SW复位)
5.低功耗管理复位
可通过查看RCC_CSR控制状态寄存器中的复位状态标志位识别复位事件来源。
软件复位
通过将Cortex™M3中断应用和复位控制寄存器中的SYSRESETREQ位置’1’,可实现软件复位。请参考Cortex™M3技术参考手册获得进一步信息。
低功耗管理复位
在以下两种情况下可产生低功耗管理复位:
在进入待机模式时产生低功耗管理复位:
通过将用户选择字节中的nRST_STDBY位置’1’将使能该复位。这时,即使执行了进入待机模式的过程,系统将被复位而不是进入待机模式。
在进入停止模式时产生低功耗管理复位:
通过将用户选择字节中的nRST_STOP位置’1’将使能该复位。这时,即使执行了进入停机模式的过程,系统将被复位而不是进入停机模式。
电源复位
当以下事件中之一发生时,产生电源复位:
上电/掉电复位(POR/PDR复位)
从待机模式中返回电源复位将复位除了备份区域外的所有寄存器。
复位电路如下所示:
图中复位源将最终作用于RESET引脚,并在复位过程中保持低电平。复位入口矢量被固定在地址0x0000_0004。
芯片内部的复位信号会在NRST引脚上输出,脉冲发生器保证每一个(外部或内部)复位源都能有至少20μs的脉冲延时;当NRST引脚被拉低产生外部复位时,它将产生复位脉冲。
详细分析
时钟
时钟详细分析
三种不同的时钟源可被用来驱动系统时钟(SYSCLK):
●HSI振荡器时钟
●HSE振荡器时钟
●PLL时钟
这些设备有以下2种二级时钟源:
●40kHz低速内部RC,可以用于驱动独立看门狗和通过程序选择驱动RTC。RTC用于从停机/待机模式下自动唤醒系统。
●32.768kHz低速外部晶体也可用来通过程序选择驱动RTC(RTCCLK)。当不被使用时,任一个时钟源都可被独立地启动或关闭,由此优化系统功耗。
HSE时钟
高速外部时钟信号(HSE)由以下两种时钟源产生:
●HSE外部晶体/陶瓷谐振器
●HSE用户外部时钟
为了减少时钟输出的失真和缩短启动稳定时间,晶体/陶瓷谐振器和负载电容器必须尽可能地靠近振荡器引脚。负载电容值必须根据所选择的振荡器来调整。

本文发布于:2024-09-21 00:23:19,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/570605.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:时钟   复位   系统   输出
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议