使用 CubeMX 配置 RCC 时钟

RCC时钟控制

STM32H7 有如下六种时钟可供使用:

  • HSI (High-speed internal oscillator) :

    HSI 是内部的高速 RC 振荡器,频率 64MHz,可被用于系统时钟。优势是低成本,无需外部时钟,快速启动(仅需几个微秒),缺点是精度差,即使经过校准。

  • HSE (High-speed external oscillator):

    HSE 是外部的高速振荡器,通过外接时钟源,有源或者无源晶振驱动,时钟范围 4-48MHz。优势是精度高,缺点是增加成本。

  • LSE (Low-speed external oscillator) :

    LSE 是外部的低速振荡器,通过外接时钟源,有源或者无源晶振驱动,一般接 32.768KHz,主要用于RTC 实时时钟

  • LSI (Low-speed internal oscillator) :

    LSI 是内部的低速 RC 振荡器,频率约是 32KHz,主要用于独立看门狗和自动唤醒,也可以用于 RTC实时时钟。

  • CSI (Low-power internal oscillator) :

    CSI 是内部低速振荡器,频率约是 4MHz,相比 64MHz 的 HSI,主要用于低功耗。

  • HSI48 (High-speed 48 MHz internal oscillator) :

    HSI48 是内部高速振荡器,频率约是 48MHz,用于给特定的外设提供时钟,比如 USB。

时钟树

在这里插入图片描述

时钟配置

STM32H7 开发板使用的外部晶振频率是 25MHz,下面分步说明如何让其通过这个频率工作到 400MHz 的主频。

  1. 在 stm32h7xx_hal_conf.h 文件配置 HSE_VALUE

    配置的大小要跟板子的实际晶振大小匹配。

    #if !defined (HSE_VALUE) 
    #define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
    #endif /* HSE_VALUE */
    
  2. 系统上电后,在启动文件 startup_stm32h743xx.s 的复位中断服务程序里面会调用函数 SystemInit。

    Reset_Handler 	PROC
        			EXPORT Reset_Handler [WEAK]
        IMPORT SystemInit
        IMPORT __main
        
        	LDR R0, =SystemInit
            BLX R0
            LDR R0, =__main
        	BX R0
            ENDP
    
  3. 以往 STM32F1 和 STM32F4 系列都会在函数 SystemInit 里面配置 PLL 锁相环,使用了 HAL 后,需要在 main 函数里面配置。也就是在 main() 里面调用 SystemClock_Config() 进行配置。

  4. SystemClock_Config() 可以使用 STM32Cubemx 进行配置,如果要自己实现会相对复杂,需要对比寄存器手册。

CubeMx 配置系统时钟

RCC 时钟的配置可以使用 stm32 官方提供的 CubeMX 进行配置。

下载地址 STM32CubeMX - STM32Cube initialization code generator - STMicroelectronics

使用

打开 STM32CubeMX 选择 MCU 进行配置
在这里插入图片描述
这时候会创建一个工程
在这里插入图片描述
创建工程后,我们找到 System Core 里的 RCC
在这里插入图片描述
我们选择 HSE 使用外部晶振:
在这里插入图片描述
如上我们打开 Clock Configuration 配置。

时钟源我们选择和开发板一样的晶振频率(安富莱v7),然后可以按照如下图配置。

然后打开 Project Manager 选择 Toolchain/IDE 这里我们生成 MDK 工程,设置好输出的路径后,我们就可以点击右上方的 GENERATE CODE 生成 MDK 工程了。

然后我们就可以打开 main.c 文件,可以找到一个 SystemClock_Config() 函数,该函数就是对 RCC 时钟的配置,只需要将其复制黏贴到我们的工程中就可以了。
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值