欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > STM32时钟树

STM32时钟树

2025/3/25 8:35:09 来源:https://blog.csdn.net/qq_43701785/article/details/146439025  浏览:    关键词:STM32时钟树

时钟树

时钟树就是STM32中用来产生和配置时钟,并且把配置好的时钟发送到各个外设的系统,时钟是所有外设运行的基础,所以时钟也是最先需要配置的东西,在程序中主函数之前还会执行一个SystemClock_Config()函数,这个函数就是用来配置时钟数的。芯片公司一般会配置这个时钟树的SystemClock_Config()函数。当不被使用时,任一个时钟源都可被独立地启动或关闭,由此优化系统功耗。在时钟树上可以配置时钟来源,各外设时钟源是否开启。

        从SYSCLK系统时钟,划一根线,左边的都是时钟的产生电路,右边的都是时钟的分配电路时钟产生电路,有4个时钟源。

时钟源

HSE

外部时钟源(HSE旁路) ,它的频率最高可达25MHz。用户可通过设置在时钟控制寄存器中的HSEBYP和HSEON位来选择这一模式。外部时钟信号(50%占空比的方波、正弦波或三角波)必须连到SOC_IN引脚,同时保证OSC_OUT引脚悬空。

外部晶体/陶瓷谐振器(HSE晶体)

4~16Mz外部振荡器可为系统提供更为精确的主时钟。在时钟控制寄存器RCC_CR中的HSERDY位用来指示高速外部振荡器是否稳定。在启动时,直到这一位被硬件置’1’,时钟才被释放出来。如果在时钟中断寄存器RCC_CIR中允许产生中断,将会产生相应中断。HSE晶体可以通过设置时钟控制寄存器里RCC_CR中的HSEON位被启动和关闭。

HSI

HSI RC振荡器能够在不需要任何外部器件的条件下提供系统时钟。它的启动时间比HSE晶体振荡器短。然而,即使在校准之后它的时钟频率精度仍较差。

制造工艺决定了不同芯片的RC振荡器频率会不同,这就是为什么每个芯片的HSI时钟频率在出厂前已经被ST校准到1%(25°C)的原因。系统复位时,工厂校准值被装载到时钟控制寄存器的HSICAL[7:0]位。

如果用户的应用基于不同的电压或环境温度,这将会影响RC振荡器的精度。可以通过时钟控制寄存器里的HSITRIM[4:0]位来调整HSI频率。

时钟控制寄存器中的HSIRDY位用来指示HSI RC振荡器是否稳定。在时钟启动过程中,直到这一位被硬件置’1’HSI RC输出时钟才被释放。HSI RC可由时钟控制寄存器中的HSION位来启动和关闭。

如果内部晶振起不来,那么芯片就起不来。如果HSE晶体振荡器失效,HSI时钟会被作为备用时钟源。

PLL

用来倍频。

LSE时钟

LSE晶体是一个32.768kHz的低速外部晶体或陶瓷谐振器。

LSE晶体通过在备份域控制寄存器(RCC_BDCR)里的LSEON位启动和关闭。

在备份域控制寄存器(RCC_BDCR)里的LSERDY指示LSE晶体振荡是否稳定。在启动阶段,直到这个位被硬件置’1’后,LSE时钟信号才被释放出来。如果在时钟中断寄存器里被允许,可产生中断申请。

外部时钟源(LSE旁路)

在这个模式里必须提供一个32.768kHz频率的外部时钟源。你可以通过设置在备份域控制寄存器(RCC_BDCR)里的LSEBYP和LSEON位来选择这个模式。具有50%占空比的外部时钟信号(方波、正弦波或三角波)必须连到OSC32_IN引脚,同时保证OSC32_OUT引脚悬空。

LSI时钟

LSI RC担当一个低功耗时钟源的角色,它可以在停机和待机模式下保持运行,为独立看门狗和自动唤醒单元提供时钟。LSI时钟频率大约40kHz(在30kHz和60kHz之间)。

LSI RC可以通过控制/状态寄存器(RCC_CSR)里的LSION位来启动或关闭。

在控制/状态寄存器(RCC_CSR)里的LSIRDY位指示低速内部振荡器是否稳定。在启动阶段,直到这个位被硬件设置为’1’后,此时钟才被释放。如果在时钟中断寄存器(RCC_CIR)里被允许,将产生LSI中断申请。

只有大容量和互联型产品可以进行LSI校准

如果需要使用低功耗时钟源,那么建议选择LSE。

时钟配置过程

        SystemClock_Config()函数时钟配置过程:首先启动内部时钟,选择内部8MHz为系统时钟,暂时以内部8MHz的时钟运行,然后再启动外部时钟,配置外部时钟,进入PLL锁相环进行倍频,8MHz倍频9倍,得到72MHz,等到锁相环输出稳定后,选择锁相环输出为系统时钟,这样就可以把系统时钟8MHz切换为72MHz,这是ST配置的流程。
        也可以自己分析SystemInit函数,这样分析之后,可以解决实际应用的一个问题,那就是如果外部晶振出问题了,可能会导致一个现象,就是会发现,程序的时钟慢了大概10倍,比如用定时器定一个1s的时间,结果过了大概10s才会进中断,这个问题就出在这里,如果外部晶振出问题了,系统时钟就无法切换到72MHz,那就会以内部的8MHz运行,8MHz相比较72M,大概慢了10倍。

时钟安全系统(CSS)

CSS是时钟安全系统,它也是负责切换时钟的,它可以监测外部时钟的运行状态,一旦外部时钟失效,就会自动把外部时钟切换回内部时钟,保证系统时钟的运行,防止程序卡死造成事故。

高级定时器中也有CSS的身影,在刹车输入这里,一旦CSS检测到外部时钟失效,通过或门立刻反映到输出比较,让输出控制的电机立刻停止,防止意外。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词