尝试使用CubeMX做stm32开发之十三:Clock Configuration(时钟树配置)

news2024/9/23 17:23:25

        参考《STM32中文参考手册_V10》,研究CubeMX中有关时钟树配置。

一、系统时钟配置

三种不同的时钟源可被用于驱动系统时钟(SYSCLK):

  • HSI振荡器时钟
  • HSE振荡器时钟
  • PLL时钟

时钟源选择对应时钟配置寄存器(RCC_CFGR)中的SW[1:0]位。

三种不同的时钟源可被用于驱动系统时钟​​​​

MCU中除了上述三种可用于驱动系统时钟的时钟源以外,还有2种二级时钟源:

  • LSI:40kHz低速内部RC,可用于驱动独立看门狗和通过程序选择驱动RTC
  • LSE:32.768kHz低速外部晶体也可用于通过程序选择驱动RTC
独立的二级时钟源

高速外部时钟信号(HSE)可由两种时钟源产生:HSE外部晶体/陶瓷谐振器;HSE用户外部时钟。这部分在前面介绍RCC时有涉及:

尝试使用CubeMX做stm32开发之八:RCC配置_Forster-C的博客-CSDN博客参考《STM32中文参考手册_V10》,研究CubeMX中有关RCC的配置。通过CubeMX配置时钟树,可以较大地简化程序开发过程,尤其是在“Clock Configuration”中,通过图形化方法,可以很方便地对stm32的时钟树进行设置,还是很好用的。https://ccszz.blog.csdn.net/article/details/128189721?spm=1001.2014.3001.5502

HSE时钟

HSI时钟信号由内部8MHz的RC振荡器产生,可以直接作为系统时钟或在2分频后作为PLL输入。HSI RC振荡器能够在不需要任何外部器件的条件下提供系统时钟,其启动时间比HSE晶体振荡器短,但时钟频率精度较差。

HSI时钟

内部PLL可以用于倍频HSI或HSE的输出时钟。PLL的设置包括:选择HSI振荡器除以2或HSE振荡器为PLL的输入时钟;选择倍频因子。

PLL的配置对应:时钟配置寄存器(RCC_CFGR)中的PLLMUL位(对PLL的分频系数进行配置)、时钟配置寄存器(RCC_CFGR)中的PLLXTPRE位(配置HSE作为PLL输入前是否分频)、时钟配置寄存器(RCC_CFGR)中的PLLSRC位(配置PLL输入时钟源(HSI的二分频信号或HSE))。

PLL

MCU允许输出时钟信号到外部MCO引脚(必须对相应引脚进行配置),以下4个时钟信号可以被选座MCO时钟:

  • SYSCLK
  • HSI
  • HSE
  • 除以2的PLL时钟

该部分的配置对应时钟配置寄存器(RCC_CFGR)中的MCO[2:0]位。

时钟输出

二、总线时钟配置

SYSCLK的频率确定后,需要进一步配置外设时钟。

对应AHB预分频通过时钟配置寄存器(RCC_CFGR)中的HPRE[3:0]位。

AHB预分频

APB1(低速APB预分频)配置对应时钟配置寄存器(RCC_CFGR)中的PPRE1[2:0]位。

APB2(高速APB预分频)配置对应时钟配置寄存器(RCC_CFGR)中的PPRE2[2:0]位。

APB1和APB2预分频

AHB、APB1、APB2是stm32的三条时钟总线,分别对应不同的外设,推荐参考:

STM32三条时钟总线(AHB、APB1、APB2)的外设情况_Jack_Sarah的博客-CSDN博客_ahb总线时钟网上整理的,三条时钟总线上挂的外设简单列举如下:1、AHB总线:(1)Flash 存储器;(2)DMA;(3)复位和时钟控制;(4)CRC;(5)以太网;(6)SDIO;2、APB2总线:(1)USART1;(2)高级控制定时器TIM1和TIM8;(3)模数转换器ADC1、ADC2、ADC3;(4)SPI1;(5)外部中断EXTI;(6)复用IO,AFIO;(7)通用IO:GPIOA~G;3、APB1总线:(1)定时器TIM2到TIM7;https://blog.csdn.net/Jack_Sarah/article/details/109105347?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167039883316782414974079%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167039883316782414974079&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-109105347-null-null.142%5Ev68%5Econtrol,201%5Ev4%5Eadd_ask,213%5Ev2%5Et3_control1&utm_term=stm32apb1apb2%E4%B8%8B%E7%9A%84%E5%A4%96%E8%AE%BE&spm=1018.2226.3001.4187ADC的时钟配置与其他外设独立,ADC预分频对应时钟配置寄存器(RCC_CFGR)中的ADCPRE1[1:0]位。

ADC预分频

三、小结

        总体上,掌握两个步骤即可:1)配置SYSCLK;2)配置AHB、APB1、APB2。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/79242.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android -- 每日一问:修改 SharedPreferences 后两种提交方式有什么区别?

知识点 SharedPreferences 类是一个接口类,真正的实现类是 SharedPreferencesImpl 。修改 SharedPreferences 需要获取它的 Editor,在对Editor进行put操作后,最后通过 commit 或者 apply 提交修改到内存和文件。当然有了两种都可以提交的方法…

Java进程线程介绍创建和执行销毁并理解线程安全和线程池 Native Method

目录1.进程和线程2.多线程的核心3.操作系统的多任务--以非常小的时间间隔交替执行4.native 修饰的方法5.Thread创建线程的两种方式1.普遍采用实现Runnable接口的方式2.继承Thread方式6.自定义线程用 new Thread(Runnable target) 启动源码分析6.1-new Thread(myThread)6.2对实例…

mysql8.0.21安装配置方法图文教程

记录了mysql 8.0.21 的安装配置方法,分享给大家。 一、下载 1、下载安装包 mysql下载路径 2、解压压缩包 3、在此目录下新建my.ini配置文件 [mysqld] # 设置 3306 端口 port3306 # 设置 mysql 的安装目录 basedirD:\mysql-8.0.21-winx64 # 设置 mysql 数据…

破案了!不会讲笑话不会作诗的chatGPT!

热出圈的chatGPT, 必须亲手试试热出圈的chatGPT, 必须亲手试试1 猜猜我是谁2 问网传图片李白风格注释代码3 写个程序看看4 帮我猜猜世界杯(发了发了,偷笑脸)5 知道李白吗?6 那你会写诗吗?6 那你讲脑经急转弯吗&#xf…

linux服务器安装docker(学习中)

linux服务器安装docker1、docker官网寻找官方文档1.1、卸载之前的docker1.2、安装yum工具类1.3、配置docker下载源的地址1.4、安装最新稳定版的docker1.5、启动docker1.6、docker镜像下载加速2、docker-卷-映射和挂载2.1、nginx1、docker官网寻找官方文档 然后根据官网文档进行…

高性能零售IT系统的建设08-9年来在互联网零售O2O行业抗黑产、薅羊毛实战记录及打法

前言 2012年左右转入互联网应用,由于本身在学校时就涉足过远程医疗影像中的DICOM安全领域这块,因此也是机缘巧合我进入互联网第一年就遇上了一次亿级的DDOS攻击以及千万级CC攻击短信系统的对抗。那时在公司一战成名,直接从team leader升到了主…

adb remount原理

1, 输入"fastboot flashing unlock" in adb ,waiting for the device 2, 输入"fastboot flashing unlock_critical"in adb ,waiting for the device 3, 输入"fastboot reboot" reboot the stb, press any key entering the boot mode 4, after…

tensorflow入门(三)tensorflow下神经网络参数的设置

参考 Tensorflow入门 - 云社区 - 腾讯云 神经网络中的参数是神经网络实现分类或回归问题中重要的部分。在tensorflow中,变量(tf.Variable)的作用就是保存和更新神经网络中的参数的。在tensorflow中,变量(tf.Variable)的作用就是保存和更新神经网络的参…

Educational Codeforces Round 123 (Rated for Div. 2) D. Cross Coloring

Problem - D - Codeforces 翻译: 有一张纸,可以用大小为𝑛𝑚:𝑛行和𝑚列的单元格表示。所有的细胞最初都是白色的。 𝑞操作已应用到工作表。他们的𝑖-th可以描述如下: &#x1d4…

前端工程化项目的思考

这是一篇个人使用前端工程开发项目的思考,希望可以帮助到你。完全是一篇综合概念应该是很多东西,我也不清楚会有多少字,估计会对刚刚开始的人看起来比较迷,但也是没有办法的事情 1.前端脚本语言开发的作者我想应该也想不到js会发展…

Spark

1 Spark作业提交流程 2 Spark提交作业参数 1)在提交任务时的几个重要参数 executor-cores —— 每个executor使用的内核数,默认为1,官方建议2-5个 num-executors —— 启动executors的数量,默认为2 executor-memory —— executor…

【OpenCV学习】第9课:形态学操作的应用-提取水平线丶垂直线

仅自学做笔记用,后续有错误会更改 理论 图像在进行形态学操作的时候, 可以通过自定义的结构元素实现结构元素对输入图像的一些对象敏感丶对另外一些对象不敏感, 这样就会让敏感的对象改变而不敏感的对象保留输出。 通过使用两个最基本的形态学操作 - 膨…

华为云服务-运维篇-弹性负载均衡

文章目录一、什么是负载均衡二、我们为什么需要负载均衡1、生活中需要它的类似场景2、生活场景中协调者(负载均衡)作用3、协调者(负载均衡)引入后的变化三、华为云平台-如何做负载均衡弹性负载均衡-ELB四、总结一、什么是负载均衡 负载均衡构建在原有网…

【数据挖掘】薪酬分段对应工作经验/学历画柱状图【招聘网站的职位招聘数据预处理】

文章目录一.需求背景1.1 需求分析二.数据处理(对给定职位,汇总薪酬分段对应工作经验要求数据,画柱状图;)2.1 事前准备2,1 处理开始三.数据处理(对给定职位,汇总薪酬分段对应学历要求数据,画柱状图;)四.附源…

吉林大学 超星慕课 高级语言程序设计 实验08 结构化程序设计(2022级)

本人能力有限,发出只为帮助有需要的人。 建议同学们自己写完后再进行讨论。 其中的代码均没能在oj上进行测试,因此可能有误,请谅解。 除此以外部分题目设计深度优先搜索,因此可以分别用递归和堆栈实现,堆栈方法为了…

JavaScript进阶教程——异步编程、封装Ajax

异步编程 什么是同步与异步: 同步:一件事没做完,只能等待,完成之后再去做另一件事 异步: 两件事可以同时进行 前端开发中最常见的两种异步情况: ajax: 向后台请求数据计时器: setInterval se…

Python学习基础笔记四十一——sys模块

sys模块是与Python解释器交互的一个接口。 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys.exit(1) sys.version 获取Python解释程序的版本信息 sys.path 返…

ARM Cortex M3处理器概述

Cortex-M3概述 2004年ARM发布作为新型Corex处理器内核系列首款的Cortex-M3处理器。 STM32系列基于专为高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M内核。 STM32命名规则 STMF103xx系统结构 1.使用高性能的ARM Cortex-M3 32位RISC内核 2.工作频率为72MHZ 3.内…

shell脚本监控文件夹文件实现自动上传数据到hive表

sh createtb.sh “tablename;field1,field2,field3,field4,field5,field6,field7;partition1,partition2” 数据库名:observation (脚本里写死了) 表名:tablename 指定名:field1,field2,field3,field4,field5,field6,f…

分别使用Alpine、Docker制作jdk镜像

目录 制作 jdk 1.0 镜像 ——Docker 1.创建文件夹上传jdk的安装包,和在同级目录下编写Dockerfile文件 2.编写 Dockerfile 文件 3.执行Dockerfile文件,初次依赖镜像的时候会下载相应镜像 优化制作jdk镜像(缩小内存大小)——使用alpine …