STM32学习(五)—— 时钟体系

发布时间:2026/9/12 18:10:57

STM32学习(五)—— 时钟体系 一、什么是晶振晶振的全称叫做晶体振荡器是晶体石英和电子元件组成晶振有一个非常重要的特性机电效应压电效应一般晶振会提供高度稳定的频率振荡频率是固定的一般晶振的频率有8MHZ、12MHZ、25MHZ、11.0592MHZ..... 晶振的单位是HZ频率单位时间内振荡的次数。二、什么是时钟时钟相当于处理器的”心脏“外部晶振经过振荡会产生高速稳定的信号由芯片的引脚输入芯片内部再经过芯片内部的频率放大器进行放大或者缩小最终变成各种总线的时钟频率处理器的外设都是由时钟控制的举个例子交响乐团 指挥思考时钟信号是由什么产生的时钟信号是由时钟源产生的比如外部晶振产生的时钟信号就是时钟源的一种但是有点外设不需要太高的时钟频率所以STM32提供了多种时钟源给用户使用。 参考STM32中文参考手册第6章 一共有5种时钟源。HSEHigh Speed External 高速外部时钟特点是精度高一般可以作为系统时钟HSI High Speed Internal 高度内部时钟频率为16MHZ的RC振荡器优点是成本低缺点是精 度低容易收温度的影响适合小家电使用LSELow Speed External 低速外部时钟频率未32.768KHZ的晶振可以驱动RTC实时时钟优点是功耗低精度高LSI Low Speed Internal 低速内部时钟频率未32KHZ的RC振荡器可以驱动独立看门狗和低功耗唤醒功能PLL倍频锁相环由HSE或HSI振荡器提供时钟信号一般可以作为系统时钟使用三、STM32时钟树四、PLL参数的修改大家可以看到标准库中使用的外部晶振是25MHZ而开发平台实际使用的是8MHZ所以如果不去修改工程的PLL参数会导致芯片的运行频率是错误的所以需要修改PLL参数可以去system_stm32f4xx.c和stm32f4xx.h两个文件中修改。—— 修改stm32f4xx.h的123行把25改为8 修改外部晶振的频率根据开发板—— 修改system_stm32f4xx.c的316行的PLL参数修改PLL_M的值 把25改为8需要注意的是不是所有产品都需要PLL因为使用PLL会增大功耗减少产品的续航能力智能手表、手机锁屏项目经验根据实际的情况来修改PLL的参数这样就可以降低功耗或者提高性能一般修改PLL_N的值192~432针对高性能模式、平衡模式、低功耗模式以手机为例高性能模式 如果修改PLL_N的值为432则主频会达到216MHZ最高位多少MHZ?平衡模式 如果修改PLL_N的值位336则主频会达到168MHZ低功耗模式 如果修改PLL_N的值位192则主频会降到84MHZ最低能降到多少MHZ注意如果芯片主频超过168MHZ就是超频工作增加芯片功耗以及会导致芯片发烫谨慎使用。四、STM32的启动过程一般大家都知道程序的入口是main函数但是在主程序运行之前是需要先运行一个启动文件xxx.s对于STM32F407ZET6来说汇编文件为startup_stm32f40_41xxx.s当然不同的芯片型号所使用的汇编文件是不一样的。启动文件的功能如下1. 配置系统的栈空间栈是一种特殊的线性表特殊在用户只能在栈的一端进行操作栈顶另一端操作不了如果没有数据进入栈空间称为空栈如果写入数据称为入栈如果读取数据称为出栈栈空间的分配是动态分配是自上向下。栈空间是由编译器来自动分配和释放的栈空间一般存储局部变量存储函数调用过程中的传递的参数、保护现场对于启动文件中的栈空间默认是1KB但是如果大家写的程序比较大用到的局部变量比较多就必须修改栈空间的大小。如果栈空间的大小不修改会导致栈溢出让程序出现位置问题相当于Linux开发中的段错误。注意栈空间可以由用户手动调整但是不能超过内部SRAM的大小192KB)2. 配置系统的堆空间THUMB 指的是 THUMB 指令集是 ARM 以前的指令集THUMB 指令集是 16bitARM现在使用的是 THUMB-2 指令集是 32bit的也就意味着 THUMB-2 指令集包含 THUMB 指令集。对于堆空间一般是动态分配的由用户来分配如Linux系统学习的malloc函数但是堆空间在 STM32 中使用较少。3. 配置系统的向量表向量表指的是中断源表向量其实就是内核发生的异常的源头启动文件中的向量表的地址都是从Flash空间的首地址开始0x00000000存储的是栈顶指针0x00000004存储的是复位程序地址向量表可以参考STM32F4中午参考手册的第十章。4. 复位程序分析【weak】指的是弱声明如果外部文件中重新定义了该函数则优先使用外部文件中的如果外部文件中没重新定义则默认使用启动文件中也就是说该函数不是唯一的。思考是否可以改变函数的入口答案是可以的可以修改为自己指定的函数接口中5. 中断服务函数的分析一旦发生了异常内核就需要去响应何处理异常需要跳转到对应的中断服务函数中执行功能中断复位函数是由用户在外部文件中来重新定义。如果用户开启某个外设的中断但是没有编写对应的中断服务函数或者中断服务函数名字写错了就回导致程序一直运行汇编文件中定义的中断服务函数但是预定义的中断服务函数内部是空的所以就会跳转到无限循环导致程序卡死。注意用户在使用外设中断外部中断、定时器中断、串口中断、看门狗中断.......的时候中断服务函数的名字必须在汇编文件中查找不能随意定义。6. 用户堆栈初始化分析如果启动MicroLIB库这个库属于KEIL公司自带的库会替换标准C库这个微型库会对代码进行高度优化所以生产的可执行文件的体积会减小但是缺点是微型库的功能没有标准C库多。
延伸阅读

更多相关文章

2026/9/12 18:10:57

ABAQUS随机颗粒生成器:Python脚本实现二维非重叠颗粒建模

简介:这是一套基于ABAQUS的二维随机颗粒生成插件,面向从事颗粒材料有限元模拟的工程师与科研人员。核心功能通过Python脚本调用ABAQUS内建函数,自动完成颗粒尺寸、形状、材料属性及分布区域的参数化设置,并借助随机数算法生成位置…

2026/9/12 18:10:57

SpringBoot+JSP网络订餐系统:工程构建与并发事务处理

简介:这是一份基于 Spring Boot 与 JSP 技术栈的 Java 网络订餐系统设计源码,面向 Java Web 开发者、毕业设计及课程设计人群,能够帮助读者快速掌握 Spring Boot 框架与 JSP 动态页面、数据库集成的完整项目开发流程。压缩包共 169 个文件、约…

2026/9/12 18:10:57

国资:高管退休潮背后的深层逻辑与组织进化

《央企换帅,看名单的人都看错了》 ——升迁只改座位,退休才改规则一天之内,十七家中央企业、二十三名高管变动,其中十六人的结局是同一个词:退休。名单一出,大家下意识找“谁上去了”。可这份公告真正完成的…

2026/9/12 19:05:59

ceph结合k8s-004

文章目录 Ceph 集群部署交付文档(离线内网 Docker 供 K8s RBD 使用) 目录 0. 先看这一页:三个必须知道的前提 ⚠️ 前提一:无独立裸盘 → 这是"功能可用"而非"生产就绪" ⚠️ 前提二:完全离线 → 镜像必须"外地带入",且要关掉 digest 转…

2026/9/12 19:05:59

WSL2下Ubuntu 20.04安装cuDNN 9.2指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/12 19:05:59

MAI-UI:新一代GUI智能体框架的技术架构与应用

1. MAI-UI技术架构解析MAI-UI作为新一代GUI智能体框架,其核心设计理念是构建一个具备强GUI理解能力和移动导航能力的多模态基础模型。技术报告显示,该系统采用Qwen3-VL作为基础模型,通过四阶段训练流程实现能力进化:感知与定位预训…

2026/9/12 19:05:59

单节锂电升压48V:单极vs两级拓扑选型与FP7209实战设计

1. 为什么单节电池要升压到48V?——从供电瓶颈看拓扑选择的底层逻辑单节锂电池标称电压3.7V,满电4.2V,放电截止约2.8V。而LED灯带、工业传感器、小型电机驱动等常见负载,普遍需要24V甚至48V直流供电。这意味着:必须把不…

2026/9/12 19:05:59

Spring Boot + WebSocket 即时聊天系统:从握手到断线重连全解析

简介:基于Spring Boot与WebSocket并结合JavaScript实现的即时聊天系统,面向需要了解Web实时通信机制的初中级开发者。资源压缩包内含99个文件,总大小10.7MB,其中包含25个Java源文件、13个JS文件、9个CSS文件及4个HTML页面&#xf…

2026/9/12 19:00:59

【2026年】大语言模型优化暖通AI节能调度

实验室暖通系统能耗高,传统的定时开关、人工调参很难做到精细节能。大语言模型能读数据、能写策略,正在给暖通节能调度带来新思路。一、大模型在暖通里怎么用1.1 负荷预测更准大模型结合历史能耗、天气、实验排期等数据,预测下一时段通风与空…

2026/9/12 2:05:33

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/12 3:55:12

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/12 10:09:03

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/12 0:04:17

MATLAB仿生优化框架:长鼻浣熊算法多策略融合实现

简介:本资源是一份面向智能优化算法研究者与MATLAB初学者的仿生智能算法实践代码包,聚焦于长鼻浣熊优化算法(COA)的多策略改进与性能验证。针对传统COA易陷局部最优、收敛精度不足等问题,作者融合Circle映射初始化提升…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 JavaWeb 的校园一卡通管理系统的设计与实现 基于 JavaWeb 的校园卡业务管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 Java 的图书馆借阅管理平台的搭建与实现 基于 Java 的图书馆综合管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 6:29:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/12 14:32:17

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/12 6:37:43

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码