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

STM32学习笔记(一)--时钟树详解

(1)时钟概述;时钟是具有周期性的脉冲信号,最常用的是占空比50%的方波。
(时钟相当于单片机的脉搏;STM32本身非常复杂,外设非常的多,为了保持低功耗工作STM32 的主控默认不开启这些外设功能。用户可以根据自己的需要决定 STM32 芯片要使用的功能,这个功能开关在STM32主控中也就是各个外设的时钟)

(2)时钟源;输入时钟源主要包括HSI、HSE、LSI、LSE。
2个外部时钟源:  HSE (High Speed External)152 高速外部振荡器
外接石英/陶瓷谐振器,频率为4MHz-16MHz。常用是8MHz
LSE (Low Speed External) 低速外部振荡器
外接32.768kHz石英晶体,主要作用于 RTC 的时钟源。
2个内部时钟源:  HSI(High Speed Internal) 高速内部振荡器
由内部RC振荡器产生,频率8MHz。
LSI(Low Speed Internal) 低速内部振荡器
由内部RC振荡器产生,频率40kHz,可作独立看门狗时钟源。

上图是STM32F103ZET6的时钟树图 请具体问题具体分析

A:表示其它电路需要的输入指定的源时钟信号以及可选的信号
往左边看为外部引脚OSC_IN(PD0)、OSC_OUT(PD1)、OSC32_IN(PC14)、OSC32_OUT(PC15)、MCO(PA8 用来可选主时钟输出)具体可查引脚图

B:锁相环,为一个特殊的振荡电路“PLL”其PLLSRC为选择输入时钟源(选择外部还是内部高速时钟输入)、PLLMUL为PLL倍频系数(*2~*16)、PLLCLK为高速的倍频时钟(简而言之可以使其信号放大做效为了达到72MHZmax的效果)。

C:为我们重点需要关注的MCU内的主系统时钟“SYSCLK”;AHB也可以理解成HCLK预分频器将 SYSCLK分频或不分频后分发给其它外设进行处理。

D:APB1总线时钟,由HCLK 经过标号E的低速APB1预分频器得到,分频因子可以选择 1,2,4,8,16,这里我们选择的是2分频,所以 APB1 总线时钟为 36M。由于 APB1 是低速总线 时钟,所以APB1总线最高频率为 36MHz,片上低速的外设就挂载在该总线上,例如有看门狗定时器、定时器 2/3/4/5/6/7(通用定时器最好都72MHZ)、RTC 时钟、USART2/3/4/5、SPI2(I2S2)与SPI3(I2S3)、I2C1与I2C2、CAN、USB 设备和2个DAC。

E:APB2 总线时钟,由 HCLK 经过标号 F 的高速 APB2 预分频器得到,分频因子可以选择 1,2,4,8,16,这里我们选择的是 1 即不分频,所以 APB2 总线时钟频率为 72M。与 APB2 高速总线链接的外设有外部中断与唤醒控制、7 个通用目的输入/输出口(PA、PB、PC、PD、PE、PF和 PG)、定时器 1、定时器 8(高级定时器最好都72MHZ)、SPI1、USART1、3 个 ADC 和内部温度传感器。其中标号 G 是ADC 的预分频器在后面 ADC 实验中详细说明不超过14MHZ一般都是除于6。

F:Cortex-M内核系统的时钟,FCLK为自由运行时钟,用来采样中断和调试模块计时,休眠依然有效;顺便讲述CSS为时钟安全系统,如果HSE外部告诉时钟启动失败,切换HSI,可进NIMI中断。

G:是STM32的时钟输出功能,用来可选主时钟输出。

相关文章:

  • Git仓库中文件的状态
  • 高频谐振功放
  • [蓝桥杯真题]小计算器
  • 使用dockerfile能力构建制品并打包容器
  • WPF 上位机 Modbus 入门必备的信息 C# 开发对接
  • Unity与Android交互通信系列(6)
  • 自动化数据驱动?最全接口自动化测试yaml数据驱动实战
  • 搜索与图论:染色法判别二分图
  • LeetCode 58. 最后一个单词的长度
  • Debian/Ubuntu linux安装软件
  • 算法体系-22 第二十二节:暴力递归到动态规划(四)
  • Python对象复制竟然有这么多种方式,赶紧学起来!
  • 示例:WPF中绑定枚举到ComboBox的方式
  • 多标签识别:JoyTag模型的图像标注革命【开源】
  • rabbitmq单机安装及性能测试
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 【Leetcode】104. 二叉树的最大深度
  • CentOS 7 防火墙操作
  • Invalidate和postInvalidate的区别
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Java的Interrupt与线程中断
  • JS变量作用域
  • k8s 面向应用开发者的基础命令
  • Logstash 参考指南(目录)
  • Nacos系列:Nacos的Java SDK使用
  • PAT A1050
  • Transformer-XL: Unleashing the Potential of Attention Models
  • 闭包,sync使用细节
  • 力扣(LeetCode)56
  • 两列自适应布局方案整理
  • 聊聊redis的数据结构的应用
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 深入 Nginx 之配置篇
  • 思维导图—你不知道的JavaScript中卷
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • 通过调用文摘列表API获取文摘
  • # 数仓建模:如何构建主题宽表模型?
  • #、%和$符号在OGNL表达式中经常出现
  • #define、const、typedef的差别
  • (4) PIVOT 和 UPIVOT 的使用
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (k8s)Kubernetes本地存储接入
  • (SpringBoot)第二章:Spring创建和使用
  • (补充)IDEA项目结构
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (每日一问)操作系统:常见的 Linux 指令详解
  • ***详解账号泄露:全球约1亿用户已泄露
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET Core WebAPI中封装Swagger配置
  • .net core 外观者设计模式 实现,多种支付选择
  • .Net Core和.Net Standard直观理解
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET 发展历程
  • /etc/shadow字段详解