首页 > 其他分享 >【STM32】STM32系统时钟RCC

【STM32】STM32系统时钟RCC

时间:2024-10-28 16:47:59浏览次数:7  
标签:分频器 系统 STM32 RCC 外设 时钟

我们每次在新建工程中对外设模块进行初始化的第一步就是RCC开启时钟

我刚开始学的时候对这个没什么概念,就只知道初始化之前要开启时钟,就要用RCC相关的函数,得过且过照着别人的代码敲,但是程序多写几个就会疑惑时钟到底是什么,为什么必须要开启……带着这些疑问我查阅了一些资料和其他大佬的博客,总结成了这一篇文章

其实RCC在STM32参考手册里有详细介绍,很多,有兴趣可以看看
详情可以参考 :STM32F10xxx参考手册(中文).pdf
链接: https://pan.baidu.com/s/14Md6vDMiS4uXUT0Nz6V5nw?pwd=ugx4
提取码: ugx4

时钟的基本概念

时钟是指用于同步系统操作、控制外设工作频率以及管理数据传输的信号

时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令

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

[引用文章 系统时钟RCC详解(超详细,超全面) 中的内容]

与时钟相关的基本概念

  • 时钟频率:时钟频率指的是时钟信号的周期性重复次数,通常以赫兹(Hz)为单位表示。它表示每秒钟时钟信号的发生次数。较高的时钟频率可以提供更高的系统性能,但也会增加功耗和热量

  • 时钟周期:时钟周期是时钟信号完成一个完整周期所需的时间。它是时钟频率的倒数,表示一个时钟周期的持续时间。例如,一个1 MHz的时钟频率对应的时钟周期为1微秒(1μs)

  • 时钟源:时钟源是提供时钟信号的来源。在计算机系统中,可以使用外部晶体振荡器外部时钟信号内部振荡器作为时钟源

  • 时钟同步:时钟同步是确保多个组件或设备使用相同的时钟信号进行操作的过程。同步时钟信号可以确保系统的稳定性和可靠性,避免数据损坏或操作错误

  • 时钟分频器:时钟分频器是一种用于减小时钟频率的电路或模块。它可以通过将时钟信号分频来降低系统时钟频率,以适应特定的需求。分频器可以将高频时钟信号分成较低频率的时钟信号

  • 时钟延迟:时钟延迟是指由于时钟信号的传播和处理所引入的时间延迟。在计算机系统中,时钟延迟可能会对操作的准确性和性能产生影响。因此,在设计和优化系统时,需要考虑和管理时钟延迟

[引用文章 STM32的时钟系统(嵌入式学习) 中的内容]

时钟系统的组成

STM32微控制器内部有一个时钟树结构,负责将主时钟信号分配到各个外设和子系统,这个时钟树通过RCC(Reset and Clock Control)模块进行配置和管理

可以把时钟树理解为时钟系统框图

在这里插入图片描述

看起来有些复杂,但是只需要将该框图以系统时钟SYSCLK为中心分为左右两部分理解

【分析】

  1. 时钟源(左边部分):STM32 有4个独立时钟源:HSI、HSE、LSI、LSE

  2. 系统时钟SYSCLK:系统时钟SYSCLK可来源于三个时钟源,最大为72MHz

    1. HSI振荡器时钟
    2. HSE振荡器时钟
    3. PLL时钟
  3. 系统时钟通过AHB分频器给外设提供时钟【重点】(右边部分)

    从左到右可以简单理解为:

    系统时钟 ➡️ AHB分频器 ➡️ 各个外设分频倍频器 ➡️ 外设时钟的设置

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

    1. **内核总线:**送给AHB总线、内核、内存和DMA使用的HCLK时钟
    2. **TIMxCLK定时器:**通过8分频后送给Cortex的系统定时器时钟
    3. I2S总线:直接送给Cortex的空闲运行时钟FCLK
    4. APB1外设:
      送给APB1分频器,APB1分频器可选择1、2、4、8、16分频,其输出一路供APB1外设使用(PCLK1,最大频率36MHz),另一路送给通用定时器使用
      该倍频器可选择1或者2倍频,时钟输出供定时器2~7使用
    5. APB2外设:
      送给APB2分频器,APB2分频器可选择1、2、4、8、16分频,其输出一路供APB2外设使用(PCLK2,最大频率72MHz),另一路送给高级定时器
      该倍频器可选择1或者2倍频,时钟输出供定时器1和定时器8使用

APB1和APB2的对应外设:参考 STM32F10xxx参考手册

在这里插入图片描述

RCC的概念

在STM32中,RCC(Reset and Clock Control)是时钟和复位控制模块

它负责管理系统时钟的生成和分配,以及控制外设的复位和时钟开启/关闭

RCC的主要功能包括:

  1. 时钟源选择:RCC可以选择不同的时钟源,比如内部振荡器、外部晶振等
  2. 时钟配置:可以配置主时钟、外设时钟等,以满足不同外设的工作频率需求
  3. 复位控制:RCC可以对各个外设进行复位,确保在系统初始化时外设处于已知状态
  4. 时钟使能/禁用:动态地开启或关闭外设的时钟,以节省功耗

通过RCC配置,开发者可以优化STM32的性能和功耗,确保系统在不同工作条件下稳定运行

RCC相关函数

在标准库函数 stm32f10x_rcc.h 文件中可以查看RCC相关函数,在 stm32f10x_rcc.c 文件中查看函数的具体定义

详细的说明也可以参考 RCC库函数 这篇文章的讲解

在这里只介绍三个最常用的函数

void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);
//使能或者失能挂载到AHB总线上的外设时钟
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
//使能或者失能挂载到APB2高速总线上的外设时钟
void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);
//使能或者失能挂载到APB1低速总线上的外设时钟

这只是对时钟系统和RCC的简单讲解,如果是入门的话先理解这些就足够了,在以后的工程中见的多了自然就懂了,反正不要急,慢慢来

标签:分频器,系统,STM32,RCC,外设,时钟
From: https://blog.csdn.net/m0_74209563/article/details/143307037

相关文章

  • 基于stm32的rfid智能农场物联网单片机软硬件设计毕业生系统
    (1)硬件端STM32F103C8T6:用于所有程序的中控和模块数据通信;0.96寸OLDE:用于显示当前设备状态以及实时温度;蜂鸣器:用于设备状态的提示和报警;RFID读卡器:使用读卡器功能进行卡号读取,并作为唯一标识体温传感器:检测到体温并且读卡器读取的卡号为牛的唯一标识,则将数据打包上传到app进行保......
  • 基于stm32的水质监测检测物联网单片机软硬件设计毕业生系统
    (1)硬件端STM32F103C8T6:用于所有程序的中控和模块数据通信;0.96寸OLDE:用于显示当前当前ph值、当前tds值,最上方显示游泳池水质检测;蜂鸣器与LED:用于设备报警和状态提示;Wife模块:用于设备联网,实现远程APP查看;超声波模块:使用超声波测距,实时回传测定的水位线;按键模块:用于调整限值数据,......
  • 基于stm32的智能语音药箱药盒物联网单片机软硬件设计毕业生系统
    (1)硬件端STM32F103C8T6:用于所有程序的中控和模块数据通信;0.96寸OLED:用于显示的各种环境数据,实现实时监测;GA10:使用4G模块,用与设备联网处理,实现连接云平台和使用MQTT协议远程传输数据,药品不足需提醒;MAX30102心率模块:用于监测患者的心率和血氧数据;LU90614红外测温:用于监测患者的......
  • 基于STM32的智能停车场管理系统设计
    引言随着城市汽车数量的增加,停车场的管理变得愈加复杂。传统的停车管理方式效率低下,而智能停车场管理系统可以提高停车效率,减少人工管理成本,提升用户体验。本文基于STM32微控制器设计了一个智能停车场管理系统,集成了车位检测、车牌识别、自动闸门控制和实时数据监控等功能,实现......
  • 【STM32+HAL库】使用通用定时器生成的PWM实现呼吸灯效果
    板子:STM32F103C8仿真软件:Proteus8软件平台:cubemx+keil1新建STM32CubeMX工程1.1配置系统时钟RCC  1.2配置定时器这里用的PB3和PA15一对在TIM2中,时钟源选择内部时钟InternalClock,通道1选择PWM输出PWMGenerationCH1通道2选择PWM输出PWMGenerationCH2 ......
  • 【STM32 Blue Pill编程实例】-控制步进电机(ULN2003+28BYJ-48)
    控制步进电机(ULN2003+28BYJ-48)文章目录控制步进电机(ULN2003+28BYJ-48)1、步进电机介绍2、ULN2003步进电机驱动模块3、硬件准备及接线4、模块配置3.1定时器配置3.2ULN2003输入引脚配置4、代码实现在本文中,我们将介使用STM32CubeIDE使用ULN2......
  • STM32--I2C外设
    前文说到了12C的协议规定和通信意义,并且也用GPIO口模拟的I2C,实现了读写MPU6050的程序,在这个过程中可以发现,通信协议的时序是一个很重要的东西,只要理解清楚了这个时序的意,就可以按照协议的规定,去翻转通信引脚的高低电平,只要翻转产生的这个时序波形,满足了通信协议的规定,那通信双......
  • STM32--I2C通信
    对于I2C通信会分为两大块来讲解,第一块,就是介绍协议规则,然后用软件模拟的形式来实现协议,第二块,就是介绍STM32的12C外设,然后用硬件来实现协议,因为12C是同步时序,软件模拟协议也非常方便。在学12C之前,我们已经学习了串口通信,串口通信,就是从TX引脚向RX引脚发送数据流,数据流......
  • CLion中使用add_subdirectory()模块化管理Stm32项目
    背景文章目录背景配置参考源码在Clion中使用STM32的时候,通常把自己开发的内容写在User目录中,然而需要将User目录下的源文件和头文件都添加到生成的CMakeLits.txt中。对于不同风格的库,直接在生成的CMakeLists.txt中添加资源会显得有些乱,可以使用cmake的**子目录(s......
  • STM32F7xx移植LVGL记录
    1简介项目中要用到屏幕,也是工作多年首次进行彩屏的开发。之前的项目大多是不需要用户界面的,或者是单色屏。GUI的开发,也就是使用过u8g2,这是个不熟悉的领域。但是也一直想要尝试彩屏的,这就有了机会。STM32就不多说了。简单说一下LVGL,在这之前也是听过LVGL这个开源图形库的鼎鼎大......