STM32F103时钟配置流程

2023-11-01

一般情况下单片机的时钟配置是单片机程序中的第一步,也是很重要的一步。这时候我们需要考虑以下几个问题。

1. 系统时钟的时钟源用哪个。

2. 系统时钟频率要多少。

3. 每个模块的时钟频率要多少。

4. 如果外部时钟出了问题,这个时候时钟是怎么运行的。

 

下面就针对性的讲一讲STM32F103的时钟配置。




知识点:

1. 系统复位后,HSI振荡器被选为系统时钟。当时钟源被直接或通过PLL间接作为系统时钟时,它将不能被停止。

 

2. STM32F103的三个可以作为系统时钟的时钟源,分别是HSI、HSE、PLL。而PLL的时钟源是HSI/2(内部RC振荡器二分频)、HSE。

 

3.如果使用HSI,系统时钟我们能达到的最大频率是64MHz,如果使用HSE,系统时钟最大频率是72MHz。

 

4.APB时钟有低速PCLK1和高速PCLK2;PCLK1是从HCLK二分频得到的,最大36MHZ,根据上一条知识点如果是使用HSI,则最快是32MHz。

 

5. PLL的设定需要在使能之前,一旦PLL使能后参数不可更改。

 

6.附录是一些缩写的英文全称,也有一些补充的知识点。



步骤:

第一步     初始化时钟

         不管现在SYSCLK的时钟源是哪个,我们要更换时钟源。先RCC_DeInit();

 

第二步              打开时钟

         内部高速时钟HSI           RCC_HSICmd(ENABLE);

         外部高速时钟HSE          RCC_HSEConfig(RCC_HSE_ON);

 

第三步              等待时钟晶振工作

         HSI            While(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)==RESET);

         HSE           While(RCC_GetFlagStatus(RCC_FLAG_HSERDY)==RESET);

 

第四步              设置AHB时钟HCLK

                                                                 RCC_HCLKConfig(RCC_SYSCLK_Div1);

        分频系数自己设定,一般都是RCC_SYSCLK_Div1即不分频。

 

第五步              设置低速APB时钟

                                                                 RCC_PCLK1Config(RCC_HCLK_Div2);

 

第六步              设置高速APB时钟

                                                                 RCC_PCLK2Config(RCC_HCLK_Div1);

第七步              设置Flash预缓冲

                                                                 FLASH_SetLatency(FLASH_Latency_2);

                                              FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);          // 使能flash预缓冲

       Flash的操作也没有总线时钟快,所以需要总线在操作flash时稍作等待。推荐根据HCLK设置。

0-24MHz时,取FLASH_Latency_0;24-48MHz,取FLASH_Latency_1;48-72MHz时,取FLASH_Latency_2。

 

第八步              设置PLL                     如果不使用PLL,请略过此步骤

         HSI                                                  RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_16 );

         HSE                                                 RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9 );

 

第九步              打开PLL                     如果不使用PLL,请略过此步骤

                                                                 RCC_PLLCmd(ENABLE);

 

第十步              等待PLL工作          如果不使用PLL,请略过此步骤

                                                                 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)== RESET);

 

第十一步              设置系统时钟

         HSI                                                  RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);

         HSE                                                 RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);

         PLL                                                  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

第十二步         判断是否是设置的时钟

         HSI                                                  while(RCC_GetSYSCLKSource()!= 0x00);

         HSE                                                 while(RCC_GetSYSCLKSource()!= 0x04);

         PLL                                                  while(RCC_GetSYSCLKSource()!= 0x08);




附录:一些缩写的英文全称及中文翻译,帮助理解记忆。

IWDG       IndependentWatchdog                                   独立看门狗

 

RTC           RealTime Clock                                                      实时时钟

                   时钟源可以是LSI,或者LSE,再或者HSE的128分频。

LSI             LowSpeed Internal                                                       内部低速时钟

                   RC振荡器,频率为40kHz。供IWDG使用,还能作为RTC的时钟源。

HSI            HighSpeed Internal                                             内部高速时钟

                   RC振荡器,频率为8MHz。

HSE           HighSpeed External                                             外部高速时钟

                   可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。

 

PLL          PhaseLockedLoop                                                   锁相环倍频输出

                   其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,

 

SYSCLK     SystemColock                                                                 系统时钟

 

AHB          AdvancedHigh performance Bus                   高级高性能总线

                   AHB主要用于高性能模块(如CPU、DMA和DSP等)之间的连接。

 

APB          Advanced PeripheralBus                                  高级外围设备总线

                   APB主要用于外设模块(如ADC、USB、SPI、UART等)与AHB之间的连接。

 

HCLK         Advanced High performance Bus Clock                 高级高性能总线时钟

                   就是SYSCLK经过AHBPrescaler(预分频器)后得到的AHB的时钟。

 

PCLK         PeripheralBus Clock                                            外围设备总线时钟                  

                   PCLK有两个,一个是低速的PCLK1,另一个是高速的PCLK2。

                   PCLK1是经过APB1Prescaler后得到的APB1时钟。

PCLK2是经过APB2 Prescaler后得到的APB2时钟。

 

FCLK                   FreeRuning Clock                                                  自由运行时钟

为供给CPU内核的时钟信号,CPU的主频就是指这个信号;1/FCLK就是CPU时钟周期。

为什么叫自由运行时钟呢?下面是别人家的讲解。

ARMJISHU注:FCLK 为处理器的自由振荡的处理器时钟,用来采样中断和为调试模块计时。在处理器休眠时,通过FCLK 保证可以采样到中断和跟踪休眠事件。 Cortex-M3内核的“自由运行时钟(free running clock)”FCLK。“自由”表现在它不来自系统时钟HCLK,因此在系统时钟停止时FCLK也继续运行。FCLK和HCLK 互相同步。FCLK 是一个自由振荡的HCLK。FCLK 和HCLK 应该互相平衡,保证进入Cortex-M3 时的延迟相同。

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

STM32F103时钟配置流程 的相关文章

  • Vue基础--Vue中的双向绑定v-model指令

    一 v model的作用和使用场景 1 1 v model指令介绍 期望的绑定值类型 根据表单输入元素或组件输出的值而变化 可以下下面元素使用
  • BSM的两个基本问题与python实现(欧式期权定价公式)

    在我们的定义中 定量分析是数学或统计学方法在市场数据上的应用 John Forman BSM定价模型的两个基本问题 隐含波动率 以某些到期日的期权报价倒推出这些期权的隐含波动率 并汇出图表 这是期权交易者和风险管理者每天都要面对的任务 蒙特
  • c++ 引用 函数重载

    定义一个学生的结构体 包含学生的姓名 年龄 成绩 性别 学生的成绩 姓名 定义为私有权限 定义一个学生类型的结构体变量 设置公有函数用于给学生的成绩和名字进行赋值 结构体中的函数 结构体中声明 结构体外定义 include
  • 8个常用JavaScript对象方法

    1 Object assign 作用 将所有可枚举的自身属性从一个或多个源对象复制到目标对象 语法 Object assign target sources 参数 target 目标对象 应用源属性的对象 修改后返回 sources 源对象
  • 管理系统总结(前端:Vue-cli, 后端Jdbc连接mysql数据库,项目部署tomcat里)

    根据所学的知识 写一个管理系统 顺便总结一些知识点 准备 前端用vue cli的框架 后端用jdbc连接数据库 项目部署tomcat服务器来完成交互 前端的vue cli框架搭建可以看 点击跳转 的第二小结 后端的tomcat在idea里的
  • 团队管理之PDP大法

    PDP 是什么 为什么有些人会谈PDP色变呢 人常常会对自己不了解的东西感到恐惧 一 什么是PDP 团队管理中的PDP可能指 Personal Development Plan 个人发展计划 它是一种用于帮助团队成员提升个人能力和达成职业目
  • 关键节点与邻居搜索:K-Core算法对比K-Hop算法的效能较量

    文章首发地址 K Core算法 K Core算法是一种网络分析算法 用于发现网络中的核心节点 核心节点是指在网络中具有重要影响力的节点 它们连接着大量其他节点 是网络中的重要信息传播和控制中心 K Core算法通过逐步删除网络中度小于K的节
  • 文件上传 —— 靶场upload-labs-master

    链接 https pan baidu com s 1I7nwmMdt9XB2AbcYQJ3 eA 提取码 1234 简介 个人学习记录 目录 一 前端js验证 二 mime类型绕过 三 黑名单绕过 四 htaccess文件配置文件漏洞 无过
  • xml系列篇之xml解析

    Welcome Huihui s Code World 接下来看看由辉辉所写的关于xml的相关操作吧 目录 Welcome Huihui s Code World 是什么 为什么要使用 优点 辉辉小贴士 xml在数据库辅助类中的应用 辉辉小
  • QListWidget的查找项方法findItems的使用(Python)

    QListWidget的查找项方法findItems的使用 Python 在PyQt中 QListWidget是一个用于显示列表视图的控件 它允许用户查看和选择其中的项 QListWidget提供了一些方便的方法 用于在列表中查找特定的项
  • Cadence设计原理图常用导出方案

    电路工作到了后期需要汇报或者写文章需要设计原图 这里整理一下Cadence设计原理图常用导出方案 前期工具用的好 后期处理没烦恼 Cadence自带工具其实很强大 只是你没尝试用 仿真环境 虚拟机Linux下Cadence617 原理图绘制
  • 手把手教你走进Hyperledger Fabric

    现在 Blockchain是业内新的热门话题 但是 寻找良好的资源来学习这项引人入胜的技术并不是一件容易的事 为了让其他人更容易学习 我开始在区块链和分布式分类帐技术 DLT 平台领域开展一系列工作 我将尽力涵盖每一步都需要掌握这些技术 首
  • 普通用户编译安装升级make(gmake)

    问题 编译安装glibc时报错提示make的版本低 需要手动编译安装 网上的资料大多是用管理员权限安装 然后修改系统环境 但是我只有普通用户的权限 将过程记录下来 下载 编译安装 wget https ftp gnu org gnu mak
  • Windows 环境解压 zip 压缩包乱码问题

    前言 最近在接受他人上传的 ZIP 压缩包时 发现解压后文件名出现了乱码 记得自己很久以前似乎把系统的编码改为了 UTF 所以盲猜是压缩包发送人的系统使用了 GBK 编码 出现了错误 正文 探索 搜了一下 发现了知乎上一个很好的回答如下 基
  • 刷脸比手机支付具便利性使用起来放心

    随着人工智能的成熟 更多智能化融入到日常生活中 支付行业在智能的浪潮下有了翻天复地的变化 由传统支付到新型支付 再到人工智能 由传统钱包到手机钱包 由手动数钱到指纹识别 每个迭代周期超乎我们的想象 就支付行业中国已经在全世界领先地位 在很多
  • 用jquery怎样获取input标签中name、type等属性值

    input text attr name input text prop name 也可以使用prop 方法获取属性
  • 路由器相关总结

    一 何为路由器 路由器是指主要负责OSI参考模型中网络层的处理工作 并根据路由表信息在不同网络之间转发IP分组的网络硬件 这里的网络一般是指IP子网 也可以称广播域 二 OSI参考模型与所对应的网络硬件 三 路由器的必要性 在某个组织的内部

随机推荐

  • Xen Server 7.0 一直无法退出维护模式

    起因 非关机后自动进入维护模式无法退出 提示服务器正在使用 查看当前虚拟机列表 7 0 要用 xl 发现没有任何虚拟机 root xenserver xl vm list 尝试强制关闭所有虚拟机 root xenserver xe vm r
  • 0欧姆电阻在电路中的作用

    转载 http bbs eetzone com thread 147 1 1 html 总的来说0欧姆电阻有以下几个功能 在电路中没有任何功能 只是在PCB上为了调试方便或兼容设计等原因 可以做跳线用 如果某段线路不用 直接不贴该电阻即可
  • Spring Boot Dubbo Zookeeper(含ZK安装脚本)

    文章目录 Spring Boot Dubbo Zookeeper 含ZK安装脚本 简介 Dubbo Common Provider Consumer Zookeeper Spring Boot Dubbo Zookeeper 含ZK安装脚本
  • FISCO BCOS简介

    FISCO BCOS是由国内企业主导研发 对外开源 安全可控的企业级金融联盟链底层平台 由金链盟开源工作组协作打造 并于2017年正式对外开源 社区以开源链接多方 截止2020年5月 汇聚了超1000家企业及机构 逾万名社区成员参与共建共治
  • 如何在linux服务器部署pgsql,安全版以及可能出现各种问题解决(保姆级教程)

    文章目录 准备 一 安装 二 配置环境变量 1 切换用户 2 修改配置文件 三 建立数据库 四 设置监听 总结 准备 提示 市面上那些在linux服务器部署pgsql好多都是水货 效果良莠不齐 笔者花了两天时间成功部署了pgsql 记录下方
  • 【华为OD机试真题2023B卷 JAVA&JS】非严格递增连续数字序列

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 非严格递增连续数字序列 知识点字符串 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 输入一个字符串仅包含大小写字母和数字 求字符串中包含的最长的非严格递增连续数字序列
  • gns3中两个路由器分别连接主机然后分析ip数据转发报文arp协议_wireshark分析(传输层,网络层,链路层)...

    wireshark抓包软件总是友善地帮包分层 1 链路层 Ethernet II协议即以太网协议 以太网帧的格式如下 这里的地址指的是MAC地址 每一个网卡对应唯一的MAC 类型指的是IP ARP CRC效验数据是否异常 在wireshar
  • shell脚本-cp命令复制目录报错cp: omitting directory

    cp 复制目录报错 如下 报错原因 cp命令默认是不能复制目录的 需要加参数 解决办法 使用cp r命令进行复制 递归处理 将指定目录下的所有文件与子目录一并处理 拓展 cp语法 cp 选项 参数 a 此参数的效果和同时指定 dpR 参数相
  • Sina实时股票数据接口大全

    From http blog csdn net ablo zhou article details 4283320 实时股票数据接口大全 股票数据的获取目前有如下两种方法可以获取 1 http javascript接口取数据 2 web s
  • 【R语言】期末考试五道题

    question1 setwd G Rexam20174710426 a lt 2 b lt 0 c lt 1 d lt 7 e lt 4 f lt 7 g lt 1 h lt 0 i lt 4 j lt 2 k lt 6 o lt NA
  • 大一python期末复习综合题

    目录 前言 问题1 阶层函数 问题2 文件读取 问题3 嵌套循环 问题4 求最短路径 问题4 1 路径长度 问题4 2 最短路径 问题4 2 1 列表添加元素 问题4 2 2 返回最短路径 问题5 绘图 问题5 1 绘制城市坐标散点图 问题
  • 面试官:说一下SSO 单点登录和 OAuth2.0 的区别

    您好 我是路人 更多优质文章见个人博客 http itsoku com 一 概述 SSO是Single Sign On的缩写 OAuth是Open Authority的缩写 这两者都是使用令牌的方式来代替用户密码访问应用 流程上来说他们非常
  • ibatis的批量增删改

    1 Ibatis的批量添加
  • Multi-Thread Life

    最近一段时间的工作比较有趣 翻译Datasheet 代码调试和讲解 说白了就是写教程 目前已经写好了串口 LCD的驱动讲解 虽然是裸机驱动 无需与OS打交道 但也算得上是驱动开发了吧 so 放弃了开发一个CE驱动的计划 手头的定时器篇马上就
  • python3使用smtplib发送邮件,带xlsx附件

    一 概述 最近在做一个统计报表 需要发送邮件 并带附件的 在之前的文章中 https www cnblogs com xiao987334176 p 10022026 html 已经实现了发送邮件 但是没有实现发送附件功能 二 正式代码 u
  • Android Treble架构学习

    自Android 8 0以来 Google引入了Treble架构 希望对vendor和system分区进行解耦处理 说句不好听的就是aosp soc odm oem 都分开各搞各的 哈哈 期待实现 system进程不加载vendor共享库
  • 【python】详解collections模块中OrderedDict的使用

    很多人认为python中的字典是无序的 因为它是按照hash来存储的 但是python中有个模块collections 英文 收集 集合 里面自带了一个子类OrderedDict 实现了对字典对象中元素的排序 import collecti
  • 亲密关系-【关键对话】-有哪些决定关系的重要议题?

    爱的感觉不来自任何顿悟或哲思 来自日常生活中一场又一场深度沟通 案例 老婆很喜欢一个脱口秀演员 但我非常讨厌 问题怎么解决 重点不在于如何解决这个问题 重点在于 这为什么是个问题 当我们不沟通家庭时间分配问题 某一次加班带来的时间挤占就会成
  • it信息技术草稿

    信息技术介绍 信息技术行业组成 相关职位 深度学习中的泛化之谜如下 为什么使用梯度下降 GD 训练的过度参数化神经网络在真实数据集上泛化得很好 即使它们能够拟合大小相当的随机数据集 此外 在所有适合训练数据的解决方案中 GD 如何找到一个泛
  • STM32F103时钟配置流程

    一般情况下单片机的时钟配置是单片机程序中的第一步 也是很重要的一步 这时候我们需要考虑以下几个问题 1 系统时钟的时钟源用哪个 2 系统时钟频率要多少 3 每个模块的时钟频率要多少 4 如果外部时钟出了问题 这个时候时钟是怎么运行的 下面就