【STM32学习】时钟配置详解
【STM32学习】时钟配置详解
- 看懂时钟图
- 结合代码
- 外部高速时钟修改
看懂时钟图
在刚开始学习32的时候,并不会在意这些,或者即使看了也看的不是很明白。随着学习的深入,我们发现看门狗、定时器、ADC很多外设都需要我们搞清楚,各自的时钟频率是多少变得很重要。
本文结合正点原子F103RBT6单片机的时钟初始配置进行说明。
为了系统能够稳定运行,在使用时,无论是低速还是高速时钟,都是使用外置的。
外部高速时钟多为晶振为8MHz。外部低速时钟为32.768KHz。
- 项目1
- 项目2
- 项目3
内部低速时钟LSI
- 由图中能看到,LSI为独立看门狗提供时钟源。但是LSI频率不是很稳定。
外部低速时钟LSE
主要是为RTC提供时钟。
- RTC时钟源有三种可以选择:①外部LSE ②外部HSE经过128分频 ③内部LSI
- 对于LSE源,只要VBAT维持供电,尽管VDD供电被切断,RTC仍继续工作。(对于另外两种见参考手册)
外部高速时钟HSE
对于F103的片子,我们多为8M晶振。
时钟源流程:
- 8M经过PLLXTPRE到达PPLMUL,经过9倍频到72MHz,作为PPLCLK;
- PPLCLK往后走也就是SYSCLK为72MHz,然后经过AHB(1分频)往后继续传递;
接下来从上往下,分别说明:- HCLK时钟是直接由AHB传递过来,所以为72MHz;
- 滴答定时器(systick):由AHB经过8分频得到的,为9MHz。(一定会被8分频);
- PCLK1:已经写明了最大为36MHz,所以如果AHB为72MHz的话,APB1一定要经过2分频,才能得到36MHz。
- TIM2-7:因为APB1经过了2分频,所以TIMXCLK得到的频率为APB1*2=72MHz;
- PCLK2: AHB为72MHz,APB2最大能为72MHz,所以直接1分频,得到72MHz;
- TIM2-7:因为APB2为1分频,所以TIMXCLK得到的频率为APB2=72MHz;
结合代码
再看代码的时候,我们很不习惯看固件库,但是这个是及其重要的,虽然看起来很耗时。
其次,就是看英文注释。即使我们不去看具体寄存器配置,也能很清晰的明白,那一句是干什么事情的。
外部高速时钟修改
STM32系列修改外部晶振以及代码的修改(f103、f105为例)
【STM32学习】时钟配置详解相关推荐
- Cubemx与HAL库系列教程|系统时钟配置详解及源码分析
STM32时钟系统简介 STM32种类繁多,时钟系统也不尽相同,但基本的还是大差不差,今日小飞哥就F1系列的MCU简单聊一聊STM32的时钟系统 1.时钟种类介绍: 先来看一看时钟树图,包含了整个系统 ...
- 关于STM32F105/107时钟配置详解
本文用的是标准库,先给出时钟配置代码,代码在system_stm32f10x.c里面. 首先定义最终系统频率72MHz: 如果是其他频率把72的注释掉,打开你想配置的频率.这个频率并不会影响实际的设置 ...
- STM32开发 -- 时钟系统详解
如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/81558649 上一篇文章讲了RTC,里面其实已经包含了时钟系统的介绍了.这篇 ...
- STM32 CAN过滤器配置详解
1 前言 STM32F10X的bxCAN是基本扩展CAN(Basic Extended CAN)的缩写,它支持CAN协议2.0A和2.0B. 在CAN协议里,报文的标识符不代表节点的地址,而是和报文的 ...
- STM32系统时钟超详解
✅作者简介:嵌入式入坑者,与大家一起加油,希望文章能够帮助各位!!!!
- STM32开发 -- 低功耗模式详解(2)
如需转载请注明出处:https://juyou.blog.csdn.net/article/details/98631012 上一篇文章 STM32开发 – 低功耗模式详解(1) 简单的总结了一下低功 ...
- 【STM32-I2C学习总结】STM32:硬件-IIC详解 , 固件库编程 , 手把手教你实现IIC
STM32:硬件-IIC详解 , 固件库编程 , 手把手教你实现IIC 一 .I2C物理层 二.协议层 1.I2C基本读写过程 (1)主机写数据到从机 (2)主机由从机中读数据 (3)I2C 通讯复合 ...
- 深度学习开发环境调查结果公布,你的配置是这样吗?(附新环境配置) By 李泽南2017年6月26日 15:57 本周一(6 月 19 日)机器之心发表文章《我的深度学习开发环境详解:Te
深度学习开发环境调查结果公布,你的配置是这样吗?(附新环境配置) 机器之心 2017-06-25 12:27 阅读:108 摘要:参与:李泽南.李亚洲本周一(6月19日)机器之心发表文章<我的深 ...
- webpack手摸手学习系列之配置详解的 entry、output、module、resolve、devServer 和 optimization
一.webpack 配置详解之 entry 创建空文件夹,通过 npm init 命令初始化 package.json 文件,通过 npm install webpack webpack-cli -g ...
最新文章
- AS3版本的MaxRects算法测试
- volumill插件下载网盘地址_IDM也可以下载磁力链接?(附资源)全程30Mb/s!你不知道的那些IDM妙用!...
- rest资源设计_REST资源何时应获得其自己的地址?
- webgl 基础渲染demo_WebGL + ThreeJS 实现实时水下焦散 Part 1
- C语言操作mysql
- 小学用计算机画画的课件,用计算机画图画.ppt
- java父类与子类的构造方法,java父类子类构造方法及方法的调用
- 实现原理 扫描枪_详细介绍扫描枪工作原理
- SourceInight快捷键(英文版)
- [转]如何查找最新文献
- 地图标识符号大全_【好玩微信小游戏大全】虫虫逃亡:烧脑游戏佳作!强烈推荐!...
- “欲望像海水,喝得越多,越是口渴。”欲望过多,
- P1252 马拉松接力赛
- 【大数据面试题】(二)Hive 相关面试题总结
- C语言课程设计——宾馆管理系统
- 高中生也能成为软件达人吗?
- java基础笔记系列_Day04
- 获得天气相关接口六-获得城市最新天气预警
- 碎片数据收集利器-结构化动态表单设计思路
- 2023 兔年春节倒计时微信小程序源码