百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

小哥带你入门系列-STM32时钟系统,STM32时钟树

bigegpt 2024-09-04 02:50 3 浏览

//插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像黑色字体加我地球呺也能领取哦。最近比较闲,带做毕设,带学生参加省级或以上比赛///

入门系列-STM32时钟系统,STM32时钟树

时钟对于单片机来说是非常重要的,它为单片机工作提供一个稳定的机器周期从而使系统能够正常运行。时钟系统犹如人的心脏,一旦有问题整个系统就崩溃。我们知道STM32属于高级单片机,其内部有很多的外设,但不是所有外设都使用同一时钟频率工作,比如内部看门狗和RTC,它只需30KHz的时钟频率即可工作,所以内部时钟源就有多种选择。在前面章节的介绍中,我们知道STM32系统复位后首先进入SystemInit函数进行时钟的设置,将STM32F1系统时钟设置为72MHz,然后进入主函数。那么这个系统时钟大小如何得来,其他外设的时钟又如何划分,可以通过一张时钟树图找到答案,只要理解好时钟树,STM32一切时钟的来龙去脉就会非常清楚。下面就来了解下时钟树,如下图所示。

在STM32时钟系统中,有5个重要的时钟源,分别是LSI、LSE、HSI、HSE、PLL。依照时钟频次分可分为高速时钟源和低速时钟源,在这5个中HSI、HSE以及PLL属于高速时钟,LSI和LSE属于低速时钟。依照时钟来源可分为外部时钟源和内部时钟源,外部时钟源就是在STM32晶振管脚处接入外部晶振的方式获取时钟源,其中HSE和LSE是外部时钟源,其他的是内部时钟源。下面我们就依照上图中数字顺序来介绍。
(1)图标1中HSI是内部高速时钟,RC振荡器,频次为8MHz。可作为系统时钟或PLL锁相环的输写。
(2)图标2中HSE是外部高速时钟,可通过外接一个频次范围是4-16MHz的时钟或者晶振,HSE能够作为系统时钟和PLL锁相环输写,还能够经过128分频后输写给RTC。
(3)图标3中LSI是内部低速时钟,RC振荡器,频次大约为40K,可供独立看门狗和RTC运用,并且独立看门狗只能运用LSI时钟。
(4)图标4的LSE是外部低速时钟,通常在外部低速时钟管脚上外接一个3二.768KHz的晶振,供RTC运用。

(5)图标5的PLL是锁相环,用于倍频输出,由于开发板外部高速晶振也独有8M,假如要使芯片的最大时钟频次是72M,可通过PLL锁相环来倍频。从图标5中能够看到,PLL时钟输写源可选择为HSI/2、HSE或者HSE/2,时钟源经过2-16倍频后输写给PLLCLK,假如系统时钟选择由PLLCLK提供,则PLLCLK最大值不要超过72M。

那么它是怎么倍频产生72MHz系统时钟的呢?我们看到在主PLL内有倍频器和分频器,PLL时钟源的输写信号要先经过一个PLLMUL倍频器,将HSE或HSI倍频2-16后输写给PLLCLK,假如系统时钟源SYSCLK选择PLLCLK作为它的来源,则最大值不能超过72M。虽然能够做超频处理,但会打破系统的稳定性,这个是不划算的。假设PLLSRC的时钟来源由HSE提供,开发板运用的HSE是8M晶振,经过PLLMUL的9倍频后能够输出72M时钟频次给PLLCLK。
假如我们选择的HSE是PLL的时钟源,PLL是SYSCLK的时钟源,即SYSCLK为72MHz,这个也是我们库函数模板中SystemInit所配置的最终系统时钟。

上面简略介绍了下STM32的5个时钟源,那么它们是怎么给其他外设和系统提供时钟的呢?在上面时钟树图中常用的时钟用字母框起来,依照它们顺序依次介绍。
(A)MCO是STM32的一个时钟输出IO(PA8),它能够选择一个时钟信号输出,能够选择为PLL输出的2分频、HSI、HSE或者系统时钟。这个时钟能够拿来给外部其他系统提供时钟源。
(B)RTC时钟。从图中线的流向可知,RTC时钟来源能够是内部低速的LSI时钟,外部低速LSE时钟(3二.768K),还能够通过HSE的128分频后得到。
(C)USB时钟。STM32中有一个全速功能的USB模块,其串行接口引擎须要一个频次为48MHz的时钟源,该时钟源只能从PLL输出端获取,能够选择为一.5分频或者1分频,也就是当须要运用USB模块时,PLL必需使能,并且PLLCLK时钟频次配置为48MHz或72MHz。
(D)SYSCLK系统时钟。它是STM32中绝大局部部件工作的时钟源。它的时钟来源能够由HSI、HSE、PLLCLK提供,相信大家选择STM32F1这种高级芯片,都希望有一个比较大的时钟频次,因此选择PLLCLK作为系统时钟。PLLCLK又是从HSE或HSI经过PLL倍频得到。依据前面PLL计算关系大家就能够算出系统时钟是多少。
(E)其他所有外设。从时钟图上能够看出,其他所有外设的时钟最终来源都是 SYSCLK。SYSCLK通过AHB分频器分频后送给各模块运用。这些模块包含:
①AHB总线、内核、内存和DMA运用的HCLK时钟。
②通过8分频后送给Cortex系统定时器时钟,即SysTick。
③直接送给Cortex的空闲运行时钟FCLK。
④送给APB1分频器。APB1分频器输出一路供APB1外设运用(PCLK1,最大频次36MHz),另一路送给定时器(Timer)1、两倍频运用。
⑤送给APB2分频器。APB2分频器分频输出一路供APB2外设运用(PCLK2,最大频次72MHz),另一路送给定时器(Timer)1倍频器运用。
⑥送给ADC分频器。ADC分频器经过2、4、6、8分频后送给ADC1/2/3运用,ADC最大频次为14M。
⑦二分频后送给SDIO运用。
其中须要了解的是APB1和APB2的差别,APB1上面连接的是低速外设,包含电源接口、备份接口、CAN、USB、I2C1、I2C2、UART2、UART3等。APB2上面连接的是高速外设包含UART1、SPI1、Timer1、ADC1、ADC2、GPIO等。
在时钟树图中我们还能够得到一个重要信息,大部分相关时钟输出局部都有一个使能控制,假如AHB总线、APB1外设、APB2外设、内核时钟等。当须要运用某个时钟的时候一定要开启它的使能,否则将不工作。在前面运用库函数点亮一个LED实验的时候就使能了GPIO的外设时钟,假如不开启,LED 将不工作。

想要学习单片机的朋友 ,做毕业设计的同学,关注我们,口令小哥,与导师一起学习成长,共同进步,还有更多资料领取。

说了这么多,大家记得留意下方评论第一条(或者私信我)有干货~

相关推荐

当Frida来“敲”门(frida是什么)

0x1渗透测试瓶颈目前,碰到越来越多的大客户都会将核心资产业务集中在统一的APP上,或者对自己比较重要的APP,如自己的主业务,办公APP进行加壳,流量加密,投入了很多精力在移动端的防护上。而现在挖...

服务端性能测试实战3-性能测试脚本开发

前言在前面的两篇文章中,我们分别介绍了性能测试的理论知识以及性能测试计划制定,本篇文章将重点介绍性能测试脚本开发。脚本开发将分为两个阶段:阶段一:了解各个接口的入参、出参,使用Python代码模拟前端...

Springboot整合Apache Ftpserver拓展功能及业务讲解(三)

今日分享每天分享技术实战干货,技术在于积累和收藏,希望可以帮助到您,同时也希望获得您的支持和关注。架构开源地址:https://gitee.com/msxyspringboot整合Ftpserver参...

Linux和Windows下:Python Crypto模块安装方式区别

一、Linux环境下:fromCrypto.SignatureimportPKCS1_v1_5如果导包报错:ImportError:Nomodulenamed'Crypt...

Python 3 加密简介(python des加密解密)

Python3的标准库中是没多少用来解决加密的,不过却有用于处理哈希的库。在这里我们会对其进行一个简单的介绍,但重点会放在两个第三方的软件包:PyCrypto和cryptography上,我...

怎样从零开始编译一个魔兽世界开源服务端Windows

第二章:编译和安装我是艾西,上期我们讲述到编译一个魔兽世界开源服务端环境准备,那么今天跟大家聊聊怎么编译和安装我们直接进入正题(上一章没有看到的小伙伴可以点我主页查看)编译服务端:在D盘新建一个文件夹...

附1-Conda部署安装及基本使用(conda安装教程)

Windows环境安装安装介质下载下载地址:https://www.anaconda.com/products/individual安装Anaconda安装时,选择自定义安装,选择自定义安装路径:配置...

如何配置全世界最小的 MySQL 服务器

配置全世界最小的MySQL服务器——如何在一块IntelEdison为控制板上安装一个MySQL服务器。介绍在我最近的一篇博文中,物联网,消息以及MySQL,我展示了如果Partic...

如何使用Github Action来自动化编译PolarDB-PG数据库

随着PolarDB在国产数据库领域荣膺桂冠并持续获得广泛认可,越来越多的学生和技术爱好者开始关注并涉足这款由阿里巴巴集团倾力打造且性能卓越的关系型云原生数据库。有很多同学想要上手尝试,却卡在了编译数据...

面向NDK开发者的Android 7.0变更(ndk android.mk)

订阅Google官方微信公众号:谷歌开发者。与谷歌一起创造未来!受Android平台其他改进的影响,为了方便加载本机代码,AndroidM和N中的动态链接器对编写整洁且跨平台兼容的本机...

信创改造--人大金仓(Kingbase)数据库安装、备份恢复的问题纪要

问题一:在安装KingbaseES时,安装用户对于安装路径需有“读”、“写”、“执行”的权限。在Linux系统中,需要以非root用户执行安装程序,且该用户要有标准的home目录,您可...

OpenSSH 安全漏洞,修补操作一手掌握

1.漏洞概述近日,国家信息安全漏洞库(CNNVD)收到关于OpenSSH安全漏洞(CNNVD-202407-017、CVE-2024-6387)情况的报送。攻击者可以利用该漏洞在无需认证的情况下,通...

Linux:lsof命令详解(linux lsof命令详解)

介绍欢迎来到这篇博客。在这篇博客中,我们将学习Unix/Linux系统上的lsof命令行工具。命令行工具是您使用CLI(命令行界面)而不是GUI(图形用户界面)运行的程序或工具。lsoflsof代表&...

幻隐说固态第一期:固态硬盘接口类别

前排声明所有信息来源于网络收集,如有错误请评论区指出更正。废话不多说,目前固态硬盘接口按速度由慢到快分有这几类:SATA、mSATA、SATAExpress、PCI-E、m.2、u.2。下面我们来...

新品轰炸 影驰SSD多款产品登Computex

分享泡泡网SSD固态硬盘频道6月6日台北电脑展作为全球第二、亚洲最大的3C/IT产业链专业展,吸引了众多IT厂商和全球各地媒体的热烈关注,全球存储新势力—影驰,也积极参与其中,为广大玩家朋友带来了...