本文用的是标准库,先给出时钟配置代码,代码在system_stm32f10x.c里面。
首先定义最终系统频率72MHz:

如果是其他频率把72的注释掉,打开你想配置的频率。这个频率并不会影响实际的设置,而只是指明了当前频率。如果定义了SYSCLK_FREQ_72MHz,会编译以下两部分:

SystemCoreClock是一个全局变量,表示当前系统时钟频率。

由上图看到实际会编译SetSysClockTo72()这个函数。
在这个函数内部,最重要的有两个寄存器设置:

此处注意,F105/107属于互联型,启动文件为 startup_stm32f10x_cl.s且必须宏定义STM32F10X_CL
在这里互联型芯片系统默认外部高速时钟是25MHz,由于一个CFGR寄存器是无法倍频到72MHz的,所以互联型芯片有两个CFGR寄存器,首先对时钟源进行分频与倍频的是CFGR2寄存器,所以先要设置CFGR2寄存器,在上图里,对外部高速时钟进行的配置是:
25/5*8=40MHz这个是PLL2CLK的频率
PLL2CLK/5=8MHz这个是PREDIV1CLK的频率
在分析时钟时我们借用CubeMx可以更加直观:

可以看到经过CFGR2寄存器对HSE操作后,我们得到了一个8MHz的时钟源,接下来只要把8X9=72MHz即可,这可以通过设置CFGR寄存器得到。
下面举个例子,假如我们外部高速时钟是8MHz,我们怎么得到72MHz的系统时钟:
首先我们可以直接用CubeMx来生成我们需要的分频与倍频:
把HSE时钟改为8MHz,把系统时钟改为72MHz,得到下面设置:

可以看到只改动了两个地方。对照代码我们做以下修改:

至此,F105时钟修改完成。
附寄存器定义:
CFGR2:

CFGR:

关于STM32F105/107时钟配置详解相关推荐

  1. 【STM32学习】时钟配置详解

    [STM32学习]时钟配置详解 看懂时钟图 结合代码 外部高速时钟修改 看懂时钟图 在刚开始学习32的时候,并不会在意这些,或者即使看了也看的不是很明白.随着学习的深入,我们发现看门狗.定时器.ADC ...

  2. Cubemx与HAL库系列教程|系统时钟配置详解及源码分析

    STM32时钟系统简介 STM32种类繁多,时钟系统也不尽相同,但基本的还是大差不差,今日小飞哥就F1系列的MCU简单聊一聊STM32的时钟系统 1.时钟种类介绍: 先来看一看时钟树图,包含了整个系统 ...

  3. varnish配置详解

       varnish配置详解 能用到缓存的服务器的原因是,应用到了程序的局部性. 空间局部性:一个程序最近访问了一个空间,那么他周边的空间也将被访问. 时间的局部性:一条指令一段时间内被执行,之后的一 ...

  4. ntp 配置详解(转载后整理汇总)

    ntp 配置详解 一.时间和时区 在LINUX系统中,有许多场合都使用时间戳的方式表示时间,即从1970年1月1日起至当前的天数或秒数. 世界遵循一个标准UTC,中国的标准是CST(北京时间)中国处于 ...

  5. GD32F4—RTC闹钟及自动唤醒中断配置详解

    GD32F4-RTC闹钟及自动唤醒中断配置详解 一.简介 二.框图 三.RTC 初始化和配置 一.简介 GD32F4x的RTC例程网上资源较少,详细阅读用户手册后做出如下配置.RTC模块提供了一个包含 ...

  6. spring mysql ssl_MySQL 使用 SSL 连接配置详解

    vsftpd配置详解 vsftpd是linux发行版中的一款ftp服务器程序它的全称是"very secure ftp daemon",号称是最安全的ftp服务器.它工作在2120 ...

  7. Log4j日志配置详解(Log4j2)

    Log4j日志配置详解 一.Log4j升级Log4j2 首先来说一下日志升级,log4j配置的变化,配置文件从log4j.xml变成了log4j2.xml,配置文件的内容也有很大不同,log file ...

  8. 虚拟化工具Xen的安装配置详解

    上一篇介绍了虚拟化的基础知识:这里来介绍具体的虚拟化工具的配置使用: 一.Xen的安装配置详解: 1.配置yum源 http://mirrors.163.com/centos/6.5/xen4/x86 ...

  9. elasticsearch-.yml(中文配置详解)

    此elasticsearch-.yml配置文件,是在$ES_HOME/config/下 elasticsearch-.yml(中文配置详解) # ======================== El ...

最新文章

  1. SAP HUM 内向交货单凭证流和Relationship Browser
  2. nc65语义模型设计_文本匹配方法系列––多维度语义交互匹配模型
  3. 12- APP接口测试以及接口文档的分析
  4. html效果属性是,htmltransition属性
  5. 应届生,你如何应付技术关?
  6. 我的新书《Spring Cloud实战》预告
  7. 18年如何拓展前端知识架构
  8. 跟小静学MVC3[01]--创建第一个MVC3项目
  9. 计算机多媒体的应用 毕业论文,计算机多媒体技术(毕业论文)多媒体技术与应用.doc...
  10. oracle 的“+”和“,”连接表的方式
  11. 全向移动机器人参数校准对比及流程分析
  12. linux查看根目录的大小,linux下查看根目录或当前目录大小
  13. 关于继承中调用成员变量和局部变量以及如何区分子类和父类中的变量,白话文详解,适合刚刚接触编程的新手
  14. 如果机械工程师分等级的话,你在哪个等级,我是婴儿级
  15. nginx-请求转发
  16. java 继承 序列化_Java中带继承的对象序列化 - Break易站
  17. 框架里面的标签采集不到怎么办_怎么做微信生态的全数据采集和打通?
  18. kaggle中的房价预测的一些数据分析方法详解
  19. python实现微信朋友圈点赞_使用vue做类似于微信点赞的效果?
  20. SSDsim源码分析之make_aged

热门文章

  1. ML:MLOps系列讲解之系列知识解读之完整总结系列内容(第一章~第九章)
  2. TSC打印机打印条形码和二维码,java实现方式
  3. 全球及中国呼叫中心服务行业运营模式及发展战略分析报告2022-2028年
  4. 7-28 天梯赛的善良 (PTA C语言)最简
  5. Android 智能遥控器源码,基于Android手机的智能遥控器设计
  6. 电脑内存不够?磁盘、硬盘
  7. Matplotlib的中文字体显示为方块的问题
  8. 使用JLink SEGGER_RTT_printf()函数实现打印浮点数
  9. 怎么找到公众微信上的视频链接
  10. tickeys 1.0.0 中文版 (键盘打字音效模拟工具)