RCC详解

今天回顾了直播课程后,自己去阅读芯片手册学习了stm32的RCC模块,针对学习的内容做一些梳理和总结。

1什么是时钟

时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令。时钟系统就是CPU的脉搏,决定cpu速率,像人的心跳一样 只有有了心跳,人才能做其他的事情,而单片机有了时钟,才能够运行执行指令,才能够做其他的处理 (点灯,串口,ADC),时钟的重要性不言而喻。

为什么 STM32 要有多个时钟源呢?

STM32本身十分复杂,外设非常多 但我们实际使用的时候只会用到有限的几个外设,使用任何外设都需要时钟才能启动,但并不是所有的外设都需要系统时钟那么高的频率,为了兼容不同速度的设备,有些高速,有些低速,如果都用高速时钟,势必造成浪费 并且,同一个电路,时钟越快功耗越快,同时抗电磁干扰能力也就越弱,所以较为复杂的MCU都是采用多时钟源的方法来解决这些问题。所以便有了STM32的时钟系统和时钟树

总结:
STM32时钟系统主要的目的就是给相对独立的外设模块提供时钟,也是为了降低整个芯片的耗能。
系统时钟,是处理器运行时间基准(每一条机器指令一个时钟周期)
时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令。
一个单片机内提供多个不同的系统时钟,可以适应更多的应用场合。
不同的功能模块会有不同的时钟上限,因此提供不同的时钟,也能在一个单片机内放置更多的功能模块。
对不同模块的时钟增加开启和关闭功能,可以降低单片机的功耗
STM32为了低功耗,他将所有的外设时钟都设置为disable(不使能),用到什么外设,只要打开对应外设的时钟就可以, 其他的没用到的可以还是disable(不使能),这样耗能就会减少。 这就是为什么不管你配置什么功能都需要先打开对应的时钟的原因。

系统时钟SYSCLK 的右边,则是系统时钟通过AHB预分频器,给相对应的外设设置相对应的时钟频率。从左到右可以简单理解为 各个时钟源—>系统时钟来源的设置—>各个外设时钟的设置

时钟系统
1各个时钟源 (左边的部分)
STM32 有4个独立时钟源:HSI、HSE、LSI、LSE。
①、HSI是高速内部时钟,RC振荡器,频率为8MHz,精度不高。
②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。
③、LSI是低速内部时钟,RC振荡器,频率为40kHz,提供低功耗时钟。 
④、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。

其中LSI是作为IWDGCLK(独立看门狗)时钟源和RTC时钟源 而独立使用

而HSI高速内部时钟 HSE高速外部时钟 PLL锁相环时钟 这三个经过分频或者倍频 作为系统时钟来使用。

PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。 通过倍频之后作为系统时钟的时钟源

举个例子:Keil编写程序是默认的时钟为72Mhz,其实是这么来的:外部晶振(HSE)提供的8MHz(与电路板上的晶振的相关)通过PLLXTPRE分频器后,进入PLLSRC选择开关,进而通过PLLMUL锁相环进行倍频(x9)后,为系统提供72MHz的系统时钟(SYSCLK)。之后是AHB预分频器对时钟信号进行分频,然后为低速外设提供时钟。

或者内部RC振荡器(HSI) 为8MHz /2 为4MHz 进入PLLSRC选择开关,通过PLLMUL锁相环进行倍频(x18)后 为72MHz

PS: 网上有很多人说是5个时钟源,这种说法有点问题,学习之后就会发现PLL并不是自己产生的时钟源,而是通过其他三个时钟源倍频得到的时钟

2系统时钟SYSCLK
系统时钟SYSCLK可来源于三个时钟源:
①、HSI振荡器时钟
②、HSE振荡器时钟
③、PLL时钟
最大为72Mhz

3USB时钟

STM32中有一个全速功能的USB模块,其串行接口引擎需要一个频率为48MHz的时钟源。该时钟源只能从PLL输出端获取(唯一的),,可以选择为1.5分频或者1分频,也就是,当需要使用USB模块时,PLL必须使能,并且时钟频率配置为48MHz或72MHz。

4把时钟信号输出到外部

STM32可以选择一个时钟信号输出到MCO脚(PA8)上,可以选择为PLL输出的2分频、HSI、HSE、或者系统时钟。可以把时钟信号输出供外部使用

5系统时钟通过AHB分频器给外设提供时钟(右边的部分) 重点

从左到右可以简单理解为 系统时钟—>AHB分频器—>各个外设分频倍频器 —> 外设时钟的设置

右边部分为:系统时钟SYSCLK通过AHB分频器分频后送给各模块使用,AHB分频器可选择1、2、4、8、16、64、128、256、512分频。其中AHB分频器输出的时钟送给5大模块使用:

①内核总线:送给AHB总线、内核、内存和DMA使用的HCLK时钟。

②Tick定时器:通过8分频后送给Cortex的系统定时器时钟。

③I2S总线:直接送给Cortex的空闲运行时钟FCLK。

④APB1外设:送给APB1分频器。APB1分频器可选择1、2、4、8、16分频,其输出一路供APB1外设使用(PCLK1,最大频率36MHz),另一路送给通用定时器使用。该倍频器可选择1或者2倍频,时钟输出供定时器2-7使用。

⑤APB2外设:送给APB2分频器。APB2分频器可选择1、2、4、8、16分频,其输出一路供APB2外设使用(PCLK2,最大频率72MHz),另一路送给高级定时器。该倍频器可选择1或者2倍频,时钟输出供定时器1和定时器8使用。

、8、16分频,其输出一路供APB2外设使用(PCLK2,最大频率72MHz),另一路送给高级定时器。该倍频器可选择1或者2倍频,时钟输出供定时器1和定时器8使用。

RCC详解_day7相关推荐

  1. stm32内部低速rtc_STM32时钟RCC详解

    时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令.时钟系统就是CPU的脉搏,决定cpu速率,像人的心跳一样只有有了心跳,人才能做其他的事情,而单片机有了时钟,才能够运行执行指令,才能 ...

  2. 【STM32】系统时钟RCC详解(超详细,超全面)

    转载:https://blog.csdn.net/as480133937/article/details/98845509 1什么是时钟 时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的 ...

  3. STM32—— AHB、APB详解

     STM32-- AHB.APB详解 2016-07-14 20:35 590人阅读 评论(0) 收藏 举报 本文章已收录于: 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.概括 首先 ...

  4. U-Boot 之一 零基础编译 U-Boot 过程详解 及 编译后的使用说明

      在之前的博文 Linux 之八 完整嵌入式 Linux 环境介绍及搭建过程详解 中我们说了要一步步搭建整个嵌入式 Linux 运行环境,今天就开始编译 U-Boot.我所使用的硬件平台及整个要搭建 ...

  5. stm32 DMA使用详解

    转自:http://www.cnblogs.com/121792730applllo/p/3154447.html STM32 DMA使用详解 DMA部分我用到的相对简单,当然,可能这是新东西,我暂时 ...

  6. pycharm+python3.7+pyqt配置_Python3+Pycharm+PyQt5环境搭建步骤图文详解

    搭建环境: 操作系统:Win10 64bit Python版本:3.7 Pycharm:社区免费版 一.Python3.7安装 下载到安装包后打开,如果想安装到默认路径(C盘)的话一直点下一步就可以了 ...

  7. pycharm python3.7环境_Python3+Pycharm+PyQt5环境搭建步骤图文详解

    搭建环境: 操作系统:Win10 64bit Python版本:3.7 Pycharm:社区免费版 一.Python3.7安装 下载到安装包后打开,如果想安装到默认路径(C盘)的话一直点下一步就可以了 ...

  8. 李沐d2l《动手学深度学习》第二版——风格迁移源码详解

    本文是对李沐Dive to DL<动手学深度学习>第二版13.12节风格迁移的源码详解,整体由Jupyter+VSCode完成,几乎所有重要代码均给出了注释,一看就懂.需要的同学可以在文末 ...

  9. STM32蜂鸣器实例详解

    //======================================================// **基于STM32的蜂鸣器实例详解 //===================== ...

最新文章

  1. oracle 服务器硬盘满了,【案例】Oracle服务器diag进程占据了12g的磁盘空间分析解决办法...
  2. 诡异!MyBatis的Insert方法一直返回-2147482646?
  3. Hibernate中的Entity类之间的继承关系之一MappedSuperclass
  4. 【Ping】unix - ping命令的退出状态
  5. Authid current_user的用法
  6. vue和小程序哪个好学一点_litemall,Spring Boot后端,微信小程序用户前端 + Vue用户移动端...
  7. ftp服务器文件查找,ftp服务器中查找文件
  8. Visio 2013专业版
  9. HenCoder自定义View学习整理
  10. 微信小程序创建过程(具体步骤)
  11. php实现facebook登陆功能
  12. HTML期末作业-我的大学宿舍
  13. pyspider 文档介绍
  14. 2022最新 wifi大师小程序独立版3.0.8
  15. svn合并时候的诡异事件
  16. 5h是什么意思_鱼杆5H什么意思?
  17. 【无线网络技术专题(十)】企业无线网络规划设计与交付流程
  18. MQTT通信平台助力AGV小车与控制系统之间实现通信
  19. Android Studio Button 美化
  20. 2023河南理工大学计算机考研信息汇总

热门文章

  1. 【python】13位时间戳转成正常格式的时间
  2. Linux 对整个系统备份和还原
  3. html页面,文字的自动换行
  4. 如何VXWORKS7.0 在应用程序里访问寄存器
  5. linux课程班兰州,兰州云计算培训,兰州计算机培训班,兰州计算机培训哪家比较好...
  6. libnetwork
  7. Drupal学习资源
  8. uni-app iOS发布
  9. ChinaSoft 论坛巡礼 | 软件工程教学案例交流与竞赛
  10. Word生成图表(柱状图、线形图等,并附带表格展示数值)