Advertisement

STM32单片机的系统时钟配置及测量方法

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:RAR


简介:
本文详细介绍了如何在STM32单片机上进行系统时钟配置以及多种实用的时钟频率测量方法,旨在帮助工程师优化硬件性能。 在嵌入式开发领域,STM32系列单片机因其高性能、低功耗以及丰富的外设接口而被广泛应用。本段落将详细阐述如何配置STM32的系统时钟(SYSCLK)为外部高速时钟(HSE),并设置监控测量端口以确保其正确运行。 了解STM32的时钟系统至关重要。STM32的时钟源主要包括内部高速RC振荡器(HSI)、外部高速晶体振荡器(HSE)、外部低速晶体振荡器(LSE)、内部低速RC振荡器(LSI)以及电源掉电检测振荡器(PDO)。其中,HSE通常用于提供较高的时钟频率,以满足高性能应用需求。 配置STM32的系统时钟为HSE步骤如下: 1. **开启HSE**: 在STM32的初始化代码中,我们需要先开启HSE。这涉及到对RCC(复位和时钟控制)寄存器的操作,如RCC_CR中的HSEON位。当写入1时,表示启动了HSE。 2. **等待HSE稳定**: 开启HSE后,需要检查其是否已经稳定。通过监控RCC_CR中的HSERDY位来实现;该位置为1时表示HSE已稳定。 3. **选择系统时钟源**: 使用RCC_CFGR寄存器的SW位来选择系统时钟源。将SW设置为0b11,意味着选择了HSE作为系统时钟源。 4. **预分频器配置**: 在RCC_CFGR中还包含了PLL(锁相环)预分频器的设定。根据实际需求,可以配置多个值以得到期望的系统时钟频率。例如,如果HSE是8MHz且希望系统时钟为72MHz,则设置PREDIV为1、PLLMUL为9。 5. **开启PLL**: 写入RCC_CR中的PLLEN位启动PLL,并等待其稳定;通过检查RCC_CR的PLLRDY位来确认是否已稳定。 6. **选择PLL作为系统时钟源**: 当PLL稳定后,再次设置RCC_CFGR的SW位为0b10,使系统时钟源切换到PLL。 完成以上步骤,STM32的系统时钟就成功配置为外部高速时钟HSE,并通过PLL倍频得到了期望的频率。 接下来是关于测量端口的配置: 1. **选择测量端口**: 选定一个GPIO端口作为测量点,比如GPIOA的一个引脚。 2. **配置GPIO模式**: 使用RCC_AHBENR启用GPIOA时钟,然后利用GPIOx_MODER设置该引脚为推挽输出或开漏输出。 3. **配置GPIO速度**: 根据需要的最高输出速度,通过设定GPIOx_OSPEEDR来控制其输出速度。 4. **生成时钟信号**: 修改GPIOx_ODR以改变选定端口的状态,并使其与系统时钟同步。 5. **测量和验证**: 使用示波器或其他测量设备连接到选定的GPIO端口,观察输出的时钟信号。确保频率符合预期,证明了系统时钟配置正确。 以上就是如何将STM32的系统时钟设置为外部高速时钟HSE,并调整相应的测量端口的过程。在实际项目中,开发者还需考虑如安全性、电源管理和功耗等因素以优化整体性能。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • STM32
    优质
    本文详细介绍了如何在STM32单片机上进行系统时钟配置以及多种实用的时钟频率测量方法,旨在帮助工程师优化硬件性能。 在嵌入式开发领域,STM32系列单片机因其高性能、低功耗以及丰富的外设接口而被广泛应用。本段落将详细阐述如何配置STM32的系统时钟(SYSCLK)为外部高速时钟(HSE),并设置监控测量端口以确保其正确运行。 了解STM32的时钟系统至关重要。STM32的时钟源主要包括内部高速RC振荡器(HSI)、外部高速晶体振荡器(HSE)、外部低速晶体振荡器(LSE)、内部低速RC振荡器(LSI)以及电源掉电检测振荡器(PDO)。其中,HSE通常用于提供较高的时钟频率,以满足高性能应用需求。 配置STM32的系统时钟为HSE步骤如下: 1. **开启HSE**: 在STM32的初始化代码中,我们需要先开启HSE。这涉及到对RCC(复位和时钟控制)寄存器的操作,如RCC_CR中的HSEON位。当写入1时,表示启动了HSE。 2. **等待HSE稳定**: 开启HSE后,需要检查其是否已经稳定。通过监控RCC_CR中的HSERDY位来实现;该位置为1时表示HSE已稳定。 3. **选择系统时钟源**: 使用RCC_CFGR寄存器的SW位来选择系统时钟源。将SW设置为0b11,意味着选择了HSE作为系统时钟源。 4. **预分频器配置**: 在RCC_CFGR中还包含了PLL(锁相环)预分频器的设定。根据实际需求,可以配置多个值以得到期望的系统时钟频率。例如,如果HSE是8MHz且希望系统时钟为72MHz,则设置PREDIV为1、PLLMUL为9。 5. **开启PLL**: 写入RCC_CR中的PLLEN位启动PLL,并等待其稳定;通过检查RCC_CR的PLLRDY位来确认是否已稳定。 6. **选择PLL作为系统时钟源**: 当PLL稳定后,再次设置RCC_CFGR的SW位为0b10,使系统时钟源切换到PLL。 完成以上步骤,STM32的系统时钟就成功配置为外部高速时钟HSE,并通过PLL倍频得到了期望的频率。 接下来是关于测量端口的配置: 1. **选择测量端口**: 选定一个GPIO端口作为测量点,比如GPIOA的一个引脚。 2. **配置GPIO模式**: 使用RCC_AHBENR启用GPIOA时钟,然后利用GPIOx_MODER设置该引脚为推挽输出或开漏输出。 3. **配置GPIO速度**: 根据需要的最高输出速度,通过设定GPIOx_OSPEEDR来控制其输出速度。 4. **生成时钟信号**: 修改GPIOx_ODR以改变选定端口的状态,并使其与系统时钟同步。 5. **测量和验证**: 使用示波器或其他测量设备连接到选定的GPIO端口,观察输出的时钟信号。确保频率符合预期,证明了系统时钟配置正确。 以上就是如何将STM32的系统时钟设置为外部高速时钟HSE,并调整相应的测量端口的过程。在实际项目中,开发者还需考虑如安全性、电源管理和功耗等因素以优化整体性能。
  • STM32安全
    优质
    本文介绍了如何在STM32微控制器上配置和优化时钟安全系统(CSS),确保系统稳定运行并提供故障保护机制。 STM32提供了一个时钟失常恢复机制(CSS)。当系统选择HSE作为工作时钟,并且启用了CSS功能后,如果HSE由于外部原因停止振荡,系统将自动切换到内部HSI运行,并产生NMI中断。此时可以在NMI中断中进行安全处理。
  • STM32Cube
    优质
    简介:本文详细介绍了如何使用STM32CubeMX工具进行STM32微控制器的时钟树配置,帮助开发者快速掌握系统时钟设置技巧。 STM32开发神器来了!它能够实现STM32时钟树的可视化配置,并且适用于所有从M0到M4系列的产品。我个人使用后感觉非常不错,推荐给大家试一试。
  • 1602
    优质
    本项目介绍如何使用1602液晶显示屏和时钟芯片在单片机上实现设置闹钟功能,包括硬件连接与软件编程。 使用1602时钟模块设置闹钟,并通过单片机程序控制。用户可以通过连接的液晶屏来调节和查看闹钟设定。
  • 改善精度
    优质
    本方案探讨并实施了多种提升单片机时钟精度的技术与策略,旨在为电子系统提供更稳定、精确的时间基准。 本段落提出了一种解决方案,针对使用单片机制作电子钟或需要根据时钟启控的控制系统时出现的问题:即使已经校准了的电子时钟也会时间变快或变慢的情况。
  • 基于51.zip
    优质
    本项目为基于51单片机开发的一款实用型时钟计时系统,能够实现精准的时间显示与定时提醒功能,适用于多种场景。 基于51单片机的时钟计时器项目包含C代码以及PCB原理图。
  • STM32F103总结归纳
    优质
    本文对STM32F103单片机的时钟系统进行了全面总结与归纳,详细介绍了其内部各时钟源、配置方法及常见问题解决方案。 ### 一、时钟源 STM32F103单片机的系统时钟部分主要涉及时钟源的选择与配置,这些对单片机性能及功耗管理至关重要。该款芯片采用ARM Cortex-M3架构,并配备了一套名为RCC(复位和时钟控制)的控制系统来分配整个系统的时钟。 #### 1. HIS(High-Speed Internal)振荡器 这是由内部RC振荡器提供的高速时钟,频率范围在4-16MHz之间。它可用作备用或初始化阶段的默认时钟源。 #### 2. HSE(High-Speed External)振荡器 HSE是由外部晶体振荡器提供,通常用于需要高精度的应用场合中,其工作频段一般为8至25MHz。 #### 3. PLL(Phase Locked Loop)时钟 PLL通过倍增内部或外部的高速时钟频率来生成更高频率的系统主时钟。例如,在输入72MHz的情况下,可以将该信号放大9倍得到648MHz输出。 ### 二、其他时钟源 #### 1. LSI(Low-Speed Internal)振荡器 这是一种内部提供的低速RC振荡器,工作频率为40kHz,主要用于驱动独立看门狗或RTC。 #### 2. LSE(Low-Speed External)振荡器 LSE是一个外部32.768kHz的时钟源,通常用于给实时时钟模块提供精确的时间基准。 ### 三、时钟分配与频率 1. **AHB总线时钟(HCLK)**:最大支持至72MHz,并可通过预分频器调节。 2. 高速APB(APB2)总线的最高允许频率同样为72MHz,而低速APB(APB1)则限制在36MHz以内。 3. **Cortex-M3系统定时器时钟**:由AHB时钟8分频后提供。 4. ADC(模数转换器)的工作速率可以从高速APB总线的2、4、6或8倍速中选择。 ### 四、系统时钟配置流程 1. 启动内部HIS振荡器。 2. 配置相关寄存器,如RCC_CR, RCC_CFGR和RCC_CIR以设定默认时钟源及预分频设置。 3. 关闭不使用的PLL或外部晶体振荡器,并关闭它们的监控机制。 4. 设置HSE为外部晶振模式而非旁路状态。 5. 配置PLL使用来自HSE输入信号,选择适当的倍增系数以产生所需的输出频率。 6. 清除所有时钟异常中断标志位。 7. 启动并等待HSE稳定后才继续下一步操作; 8. 调整AHB、APB1和APB2预分频器设置系统工作频率; 9. 开启PLL,并在它锁定后再启用该信号作为系统的主时钟源。 总结:STM32F103的时钟配置是一个精细的过程,需根据具体的应用需求选择合适的时钟源并调整相应的参数以获得最佳性能与功耗效率。整个过程中需要对RCC寄存器进行精确控制和设置,确保每个步骤准确无误才能保证单片机正常运行。
  • 51红外遥控
    优质
    本项目设计并实现了一个基于51单片机的红外遥控时钟系统。该系统能够通过红外遥控器进行时间设置、闹钟设定等操作,为用户提供便捷的时间管理工具。 红外遥控器时钟程序代码适用于单片机C51。这段文字描述了关于如何编写用于单片机C51的红外遥控器时钟功能的相关代码的信息。
  • STM3272MHz,为何还需Flash?
    优质
    当为STM32微控制器设定72MHz系统时钟频率,必须相应地调整Flash加速器设置。这是因为更高的工作频率需要更短的内存访问时间以维持稳定的数据读取和写入速率,从而保证代码能够流畅运行而不会出现错误或延迟。配置Flash等待状态可确保CPU在高速模式下仍能可靠执行程序指令。 当配置STM32的72MHz时钟频率时,还需要进行Flash存储器的相关设置。这是因为虽然STM32支持高达72MHz的工作速度,但其内部Flash存储器由于制造工艺限制无法达到这一高频率。 在CPU访问Flash以获取指令或数据的过程中,必须加入等待周期来确保操作正确无误。此外,在STM32中,Flash被设计为64位宽度的结构,意味着每次读取可以提取64位的数据,并且有两层缓冲机制用于缓存从Flash读出的信息。 由于Cortex-M3架构下不同长度指令的存在(包括16位和32位),程序执行时的实际等待周期数量会因具体代码内容而异。例如,在连续执行相同长度的指令时,可能不需要额外的等待周期;然而一旦遇到跳转或其它复杂的操作,则需要重新初始化缓冲机制并引入必要的延迟。 因此,在进行性能评估时,不能仅凭是否存在等待周期来评判程序表现的好坏,而是应该综合考量平均性能指标。这说明了为何在设置STM32高速运行模式的同时还要特别注意Flash配置的相关细节。