STM32学习 12 理解STM32的时钟树

Posted 编程圈子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32学习 12 理解STM32的时钟树相关的知识,希望对你有一定的参考价值。

一、STM32的时钟源

STM32 有5个时钟源:

  • HSI:高速内部时钟,RC振荡器,频率为8MHz。
  • HSE:高速外部时钟,可接外部晶振、时钟源,频率范围为4MHz~16MHz。
  • LSI:低速内部时钟,RC振荡器,频率为40kHz。
  • LSE:低速外部时钟,接频率为32.768kHz的石英晶体。
  • PLL:锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2,倍频可选择2~16倍,但是其输出频率最大不得超过72MHz。

二、内部RC振荡器与外部晶振的选择

STM32可以选择内部时钟,也可以选择外部时钟,如果使用内部时钟,要注意:

  • 对于100脚或144脚的产品,OSC_IN接地、OSC_OUT悬空。
  • 对于少于100脚的产品,有两种 接法:
    • OSC_IN和OSC_OUT分别通过10千欧电阻接地,可提高EMC性能。
    • 分别重映射OSC_IN和OSC_OUT至PD0和PD1,再配置PD0和PD1为推挽输出、输出值设置为0.
  • 内部8MHz的时钟误差在1%左右,比外部精度通常低10倍以上。

三、STM32使用时钟的流程

如使用HSE时钟、使用STM32的固件库函数。

  1. RCC初始化
  2. 调用函数 RCC_HSEConfig(RCC_HSE_ON); 打开HSE
  3. 等待时钟准备就绪 HSEStartUpStatus=RCC_WaitForHSEStartUp();
  4. 调用函数 RCC_HCLKCOnfig 设置AHB时钟
  5. 调用函数 RCC_PCLK2Config 调用高速AHB时钟
  6. 调用函数RCC_PCLK1Config 调用低速AHB时钟
  7. 调用函数 RCC_PLLConfig 设置PLL
  8. 调用函数 RCC_PLLCmd(ENABLE); 打开PLL
  9. 等待PLL准备就绪
  10. 调用函数 RCC_SYSCLKConfig设置系统时钟
  11. 判断PLL是否是系统时钟
  12. 调用函数RCC_APB2PeriphClockCmd();RCC_APB1PeriphClockCmd(); 打开要使用的外设时钟。

以上是关于STM32学习 12 理解STM32的时钟树的主要内容,如果未能解决你的问题,请参考以下文章

STM32H7时钟树RCC分析--- CubeMx配置

STM32学习笔记 一基于STM32F103C8T6最小系统板和STM32CubeMX实现LED灯循环闪烁

stm32时钟树解析

STM32时钟树

[转] STM32各种时钟的区别

STM32学习——RCC时钟配置