当前位置: 首页 > news >正文

01STM32时钟树

时钟树

时钟树就是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检测到外部时钟失效,通过或门立刻反映到输出比较,让输出控制的电机立刻停止,防止意外。


http://www.mrgr.cn/news/95669.html

相关文章:

  • Spring Boot整合MyBatis
  • Python个人学习笔记(19):模块(正则表达式)
  • 【MySQL】内置函数
  • Linux安装Ollama+MaxKB建立本地知识库
  • 全息教学系统的软件开发,沉浸式数字沙盘展示系统如何改变历史教学
  • LangChain组件Tools/Toolkits详解(6)——特殊类型注解Annotations
  • 风控笔记4——市场风险管理
  • (UI自动化测试web端)第二篇:元素定位的方法_class定位
  • DigitalFoto公司如何用日事清流程管理工具实现任务优先级与状态可视化?
  • Jackson的核心类与API方法:ObjectMapper、JsonNode、ObjectNode、ArrayNode
  • Blender导出fbx到Unity找不到贴图的问题
  • C++面试题总结
  • 【NLP 42、实践 ⑪ 用Bert模型结构实现自回归语言模型的训练】
  • (UI自动化测试web端)第二篇:元素定位的方法_xpath路径定位
  • Maven下载以及项目创建(笔记)
  • CSS动画
  • 51c自动驾驶~合集26
  • Linux系统管理与编程08:任务驱动综合应用
  • 深入理解Java享元模式及其线程安全实践
  • 网络安全学习-博客文序记