STM32F4时钟系统

2023-11-16

目录

1:   STM32有5个时钟源:HSI,HSE,LSI,LSE,PLL 

2:   系统时钟SYSCLK可来源于三个时钟源:

3:STM32F4时钟信号输出MC01(PA8)和MCO2(PC9)

4:系统时钟初始化函数 SystemInit();


 

1:STM32有5个时钟源:HSI,HSE,LSI,LSE,PLL 

  • HSI是高速内部时钟,RC振荡器、频率为16MHZ,精度不高。可以直接作为系统时钟或者用作PLL时钟输入
  • HSE是高速外部时钟,可接石英/陶瓷谐振器,或接外部时钟源,频率范围为4M~26M.

 

 

  • LSI是低速内部时钟,RC振荡器,频率为32KHZ,提供低功耗时钟。主要供独立看门狗和自动唤醒单元使用。
  • LSE是低速外部时钟,接频率为32.768KHZ的石英石钟。RTC

 

  • PLL为锁相环倍频输出。STM32F4有两个PLL。

      主PLL,(PLL)由HSE或者HSI提供时钟信号,并具有两个不同的输出时钟

         第一个输出PLLP用于生成高速的系统时钟(最高168MHZ)

         第二个输出PLLQ用于生成USB OTG FS的时钟(48MHZ),随机数发生器的时钟和SDIO时钟

     专用PLL(PLLI2S)用于生成精确时钟,从而在I2S接口实现高品质音频性能。

 

2:系统时钟SYSCLK可来源于三个时钟源:

HSI振荡器时钟

HSE振荡器时钟

PLL时钟

 

3:STM32F4时钟信号输出MC01(PA8)和MCO2(PC9)

    MCO1:可以配置预分频器(1~5)向MCO1引脚PA8输出4个不同的时钟源

  • HIS
  • LSE
  • HSE
  • PLL

 

MCO2:可以配置预分频器(1~5)向MCO2引脚PC9输出4个不同的时钟源: 

  •  HSE
  • PLL
  • SYSCLK
  • PLLI2S

 

注:MCO最大输出时钟不超过100MHZ,且在使用任何一个外设之前,必须首先使能其相应的时钟

 

4:系统时钟初始化函数 SystemInit();

在使用标准库函数的时候,在系统启动之后会自动调用:

; Reset handler
Reset_Handler    PROC
                 EXPORT  Reset_Handler             [WEAK]
        IMPORT  SystemInit
        IMPORT  __main

                 LDR     R0, =SystemInit
                 BLX     R0
                 LDR     R0, =__main
                 BX      R0
                 ENDP
  • 若要使用外部时钟源HSE,要配置外部晶振频率在
#if !defined  (HSE_VALUE) 
  #define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
  • 初始化之前首先通过宏定义定义下面变量来定义系统时钟频率:
/************************* PLL Parameters *************************************/
#if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx) || defined (STM32F401xx)
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */
#define PLL_M      8
#else /* STM32F411xE */
#if defined (USE_HSE_BYPASS)
#define PLL_M      8    
#else /* STM32F411xE */   
#define PLL_M      16
#endif /* USE_HSE_BYPASS */
#endif /* STM32F40_41xxx || STM32F427_437xx || STM32F429_439xx || STM32F401xx */  

/* USB OTG FS, SDIO and RNG Clock =  PLL_VCO / PLLQ */
#define PLL_Q      7

#if defined (STM32F40_41xxx)
#define PLL_N      336
/* SYSCLK = PLL_VCO / PLL_P */
#define PLL_P      2
#endif /* STM32F40_41xxx */

在MDK钟已经宏定义了STM32F40_41xxx

SO,整理一下,得到如下定义:

#define PLL_M 8
#define PLL_Q 7
#define PLL_N 336
#define PLL_P 2
/*  PLL=8*N/(M*P)=8*336/(8*2)=168M  */

 

 

执行上面的操作后:    

  • SYSCLK(系统时钟) =168MHz     
  • AHB总线时钟(HCLK=SYSCLK)   =168MHz   
  •  APB1总线时钟(PCLK1=SYSCLK/4)    =42MHz   
  • APB2总线时钟(PCLK2=SYSCLK/2)   =84MHz     
  • PLL主时钟     =168MHz

可以通过变量SystemCoreClock获取系统变量。

#if defined (STM32F40_41xxx)
  uint32_t SystemCoreClock = 168000000;
#endif /* STM32F40_41xxx */

 

 

 

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32F4时钟系统 的相关文章

  • 毕业设计 opencv图像增强算法系统

    文章目录 0 简介 1 基于直方图均衡化的图像增强 2 基于拉普拉斯算子的图像增强 4 基于伽马变换的图像增强 软件实现效果 最后 0 简介 今天学长向大家分享一个毕业设计项目 毕业设计 opencv图像增强算法系统 项目运行效果 毕业设计

随机推荐

  • 8个不可不知的Mac OS X专用命令行工具

    本文转载至 https segmentfault com a 1190000000509514 OS X的终端下通用很多Unix的工具和脚本 如果从Linux迁移到OS X会发现很多熟悉的命令和脚本工具 其实并没有任何区别 但是OS X也提
  • Clamav杀毒软件源码分析笔记[十]

    Clamav杀毒软件源码分析笔记 十 刺猬 http blog csdn net littlehedgehog 客户端处理 服务端已经把主要的工作都已经处理的差不多了 剩下来也就是服务端等待客户端提出请求 然后根据客户端的请求做相应的工作
  • sql注入绕过技巧

    前言 今天斗胆来整理一下sql注入的各种绕过姿势 以后方便查阅 SQL注入的绕过技巧有很多 具体的绕过技巧需要看具体的环境 而且很多的绕过方法需要有一个实际的环境 最好是你在渗透测试的过程中遇到的环境 否则如果仅仅是自己凭空想 那显然是不靠
  • C语言项目——学生信息管理系统

    文章目录 学生信息管理系统 一 项目思路 1 模块化思想 2 流程图 二 功能框架 1 系统菜单 2 其他功能 三 分布实现 0 学生属性 系统属性 1 学生属性 2 系统属性 1 创建系统 2 绘制菜单 3 按键操作 4 录入信息 5 浏
  • 等精度测频原理--频率计

    等精度测频原理 频率计 本系统采用等精度测频的原理来测量频率 其原理如图2所示 图2 等精度测频原理图 图2中的门控信号是可预置的宽度为Tpr的一个脉冲 CNT1和CNT2是两个可控计数器 标准频率信号从CNT1的时钟输入端FS输入 其频率
  • 常见的几种矩阵分解方式

    项目github地址 bitcarmanlee easy algorithm interview and practice 欢迎大家star 留言 一起学习进步 1 三角分解 LU分解 矩阵的LU分解是将一个矩阵分解为一个下三角矩阵与上三角
  • H5浏览器播放RTMP直播流

  • Python编程快速上手

    题目1 编写一个名为collatz 的函数 它有一个名为number的参数 如果参数是偶数 那么collatz 就打印出number 2 如果number是奇数 collatz 就打印3 number 1 def collatz numbe
  • 面试题 ⑥

    1 Java常见的线程池有哪些 它们的使用场景 newSingleThreadExecutor 创建一个单线程的线程池 此线程池保证所有的执行顺序按照任务的提交顺序执行 FIFO 适合顺序处理文件日志等 newFixedThreadPool
  • easyUI datagrid中checkbox选中事件以及行点击事件,翻页之后还可以选中

    DataGrid其中与选择 勾选相关 DataGrid属性 singleSelect boolean 如果为true 则只允许选择一行 false ctrlSelect boolean 在启用多行选择的时候允许使用Ctrl键 鼠标点击的方式
  • MySQL主从复制(Master-Slave)实践

    转载自 https www cnblogs com gl developer p 6170423 html 参考 https blog csdn net lildkdkdkjf article details 10004663 MySQL数
  • Python的pickle模块详解(包括优缺点及和JSON的区别)

    文章目录 一 pickle是什么 1 pickle的优缺点 2 pickle和JSON的区别 3 pickle的应用总结 二 pickle的用法 1 pickle接口 2 pickle实例 结语 一 pickle是什么 在英语中 pickl
  • 批处理一键关闭危险端口(135 137 138 139 445)预防勒索病毒

    一键关闭危险端口 bat echo off color 1f title 关闭常见的危险端口 echo 正在开启Windows防火墙 echo netsh advfirewall set currentprofile state on gt
  • 备份BOM T-SQL

    转载请注明出处 联系我 t39q 163 com 本人热衷于数据库技术及算法的研究 志同道合之士 欢迎探讨 ALTER PROC dbo proc BOM VersionAutoUpgrade company NVARCHAR 20 Par
  • input type=file选择图片按钮样式修改与图片预览

    1 背景 通过上图我们可以看到input type file按钮的默认样式 非常不美观 如果要自定义该按钮的样式 要如何实现呢 2 方式1样式 input覆盖整个按钮区域 并且设置完全透明
  • 图显系统DRM ENCODER和CONNECTOR完全解析

    0 引言 DRM ENCODER 和 CONNECTOR 模块由图显外设抽象而来 从传统意义上来讲 ENCODER 包含外设控制器的功能 而 CONNECTOR 包含外设 PHY 或者显示器参数 但是这两部分又紧密关联 因此 软件 DRM
  • 大神之路-起始篇

    欢迎关注 WeiyiGeek 作者 设为 星标 每天带你 基础入门 到 进阶实践 再到 放弃学习 涉及 网络安全运维 应用开发 物联网IOT 学习路径 个人感悟 等知识 花开堪折直须折 莫待无花空折枝 文章目录 第 4 部分 计算机软件与算
  • linux socket 开源库,libsocket

    README for libsocket BUILDING libsocket If you want to install both libsocket and libsocket simply use this command mkdi
  • 纯JS实现国家/省/市三级级联

    偷懒只加入了部分数据 HTML模块 div 国家 div
  • STM32F4时钟系统

    目录 1 STM32有5个时钟源 HSI HSE LSI LSE PLL 2 系统时钟SYSCLK可来源于三个时钟源 3 STM32F4时钟信号输出MC01 PA8 和MCO2 PC9 4 系统时钟初始化函数 SystemInit 1 ST