当前位置: 首页 > news >正文

使用 CubeMX 配置 RCC 时钟

使用 CubeMX 配置 RCC 时钟

  • RCC时钟控制
    • 时钟树
  • 时钟配置
  • CubeMx 配置系统时钟
    • 使用

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 时钟的配置,只需要将其复制黏贴到我们的工程中就可以了。
在这里插入图片描述

相关文章:

  • CVPR 2022 Oral 大连理工提出的SCI 快速、超强的低光照图像增强方法 可视化代码
  • CVE-2013-4547 Nginx文件名解析漏洞详解
  • 信息收集之 操作系统识别
  • 程序设计——图书管理系统(附源代码)
  • 纯C实现的贪吃蛇(无EaxyX,详解)
  • 布局管理器案例集锦
  • STL 源码阅读笔记-类型萃取(Traits)
  • 【MySQL 第三天数据库表 增删改查】
  • 【白板推导系列笔记】降维-样本均值样本方差矩阵
  • nonebot2聊天机器人插件10:迁移至nonebot2.0.0b5
  • 高速度结构设计
  • Java(六)——常用类 --- 大数运算
  • 【对比Java学Kotlin】协程-异步流
  • 基于Vue+SSM+SpringCloudAlibaba的英雄管理系统
  • 基于注意力机制的循环神经网络对 金融时间序列的应用 学习记录
  • [笔记] php常见简单功能及函数
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • conda常用的命令
  • EventListener原理
  • Fastjson的基本使用方法大全
  • Git初体验
  • MD5加密原理解析及OC版原理实现
  • mysql中InnoDB引擎中页的概念
  • Python3爬取英雄联盟英雄皮肤大图
  • Python利用正则抓取网页内容保存到本地
  • Spring Cloud Feign的两种使用姿势
  • ubuntu 下nginx安装 并支持https协议
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 缓存与缓冲
  • 基于 Babel 的 npm 包最小化设置
  • 面试遇到的一些题
  • 如何进阶一名有竞争力的程序员?
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 我从编程教室毕业
  • 小试R空间处理新库sf
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 阿里云重庆大学大数据训练营落地分享
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​批处理文件中的errorlevel用法
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • $.proxy和$.extend
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (1)(1.13) SiK无线电高级配置(六)
  • (C++20) consteval立即函数
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (四)JPA - JQPL 实现增删改查
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转载)(官方)UE4--图像编程----着色器开发
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .Net Remoting常用部署结构