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

STM32 单片机最小系统全解析

STM32 单片机最小系统全解析

本文详细介绍了 STM32 单片机最小系统,包括其各个组成部分及设计要点与注意事项。STM32 最小系统在嵌入式开发中至关重要,由电源、时钟、复位、调试接口和启动电路等组成。

在电源电路方面,采用 3.3V 直流电源供电,通常使用 AMS1117-3.3 电源芯片将 5V 电压转换为稳定的 3.3V 电压,多个滤波电容可有效去除电源中的杂波和干扰信号。

时钟电路中,晶振为单片机提供运行的时钟信号,STM32 有高速和低速两种晶振,高速晶振一般为主时钟晶振,常见频率为 8MHz,低速晶振通常为 RTC 时钟晶振,频率一般为 32.768kHz。晶振两端连接的电容可起到滤波和消除电感干扰的作用,通过选择合适的电容值,可与晶振形成并联谐振电路,使晶振输出的震荡频率更加稳定。

复位电路有手动复位和上电复位两种方式,手动复位通过按键实现,上电复位利用电容的充放电特性。STM32 是低电平复位,复位时初始化各个寄存器,但不包括 RAM。

调试接口电路中,常用的调试下载方式有 JTAG 和 SWD。SWD 调试接口结构简单,节省 I/O 口和板子空间,在高速模式下更加可靠。

启动电路有三种启动模式,由 BOOT0 和 BOOT1 引脚在复位时的状态决定。从主 Flash 启动是最常见的启动方式,代码存储在 STM32 的内置 Flash 中;从系统存储器启动时,内置 ROM 的起始地址将被重映射到 0x00000000 地址;从嵌入式 SRAM 中启动时,适合调试,但掉电丢失。

在设计要点方面,晶振电路设计要注意电阻、电容的选择和作用;复位电路采用手动复位的方式,通过按键实现;电源稳压电路要选用合适的稳压芯片。

注意事项包括走线要求、焊接技巧、检查引脚连接和通断的方法、芯片焊接步骤及注意事项、非正常短接的找错方法以及 PCB 绘制中的快捷键、注意事项和技巧。

总之,了解和掌握 STM32 单片机最小系统的组成、设计要点和注意事项,对于嵌入式开发人员来说至关重要。

一、STM32 最小系统概述

STM32 单片机最小系统在嵌入式开发中具有至关重要的地位,它是单片机稳定运行的基础。就如同一个人的身体系统需要各个器官协同工作才能保持健康,STM32 单片机也需要最小系统的各个组成部分共同作用才能正常运行。

最小系统主要由电源、时钟、复位、调试接口和启动电路等组成。电源是整个系统的动力来源,就像人的消化系统为身体提供能量一样。STM32 的工作电压一般为 1.8 - 3.3V,通常使用 3.3V 直流电源为其供电。为了保证电源的稳定性,电路中通常会加入多个滤波电容。

时钟电路犹如人的心脏,为单片机提供运行的节奏。STM32 有两组晶振,主时钟晶振一般为 8MHz,为单片机提供主时钟信号;RTC 时钟晶振通常为 32.768kHz,为实时时钟提供时钟信号。晶振两端通常会连接电容,起到滤波和稳定频率的作用。

复位电路则是单片机的免疫系统,当系统出现故障或混乱时,可通过复位让系统重新开始。STM32 是低电平复位,通常有手动复位和上电复位两种方式。上电复位利用电容的充放电特性,在上电瞬间使复位引脚为低电平,经过一段时间后电容充电完成,复位引脚变为高电平,单片机开始正常工作。手动复位则通过按键实现,按下按键时复位引脚接地为低电平,松开后恢复高电平。

调试接口是开发过程中不可或缺的部分,它方便开发者进行程序的下载和调试。常见的调试接口有 JTAG 和 SWD,现在 SWD 调试接口使用较为广泛,它只需两根线即可实现调试和下载功能。

启动电路则决定了单片机的启动方式。STM32 有三种启动模式,由 BOOT0 和 BOOT1 引脚在复位时的状态决定。一般情况下,如果想用串口下载代码,则必须配置 BOOT0 为 1,BOOT1 为 0;如果想让 STM32 按下复位键就开始跑代码,则需要配置 BOOT0 为 0,BOOT1 随便设置都可以。

综上所述,STM32 最小系统的各个组成部分相互配合,共同为单片机的稳定运行提供了保障。

二、组成部分详解

(一)电源电路

STM32 的工作电压一般为 1.8 - 3.3V,通常使用 3.3V 直流电源为其供电。电源电路中,稳压芯片起到关键作用,如常见的 AMS1117-3.3 电源芯片,可将输入的 5V 电压转换为稳定的 3.3V 电压,为 STM32 及其他电路模块提供合适的工作电压。电容在电源电路中也非常重要,起到滤波的作用。多个滤波电容可以有效去除电源中的杂波和干扰信号,保证电源的稳定性。例如,当电源中出现高频噪声时,小容量的陶瓷电容可以快速充放电,将高频噪声滤除;而大容量的电解电容则可以对低频波动进行平滑处理,确保电源电压的稳定输出。

(二)时钟电路

晶振在 STM32 中起着至关重要的作用,就如同心脏为人体提供节奏一样,晶振为单片机提供运行的时钟信号。STM32 有高速和低速两种晶振。高速晶振一般为主时钟晶振,常见的频率为 8MHz,为单片机提供主时钟信号,使单片机能够高速运行各种程序和任务。低速晶振通常为 RTC 时钟晶振,频率一般为 32.768kHz,为实时时钟提供精确的时钟信号,保证时间的准确记录。在晶振两端连接的电容,一方面可以起到滤波的作用,减少外部干扰对晶振频率的影响;另一方面,还可以消除晶振的电感干扰。根据搜索到的资料,晶振在电气上可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,通过选择合适的电容值,可以与晶振形成并联谐振电路,从而使晶振输出的震荡频率更加稳定。

(三)复位电路

复位电路主要有手动复位和上电复位两种方式。手动复位是通过按键实现的,当按下按键时,复位引脚接地为低电平,松开后恢复高电平。这种方式在系统出现故障或需要重新启动时非常方便。上电复位则利用电容的充放电特性,在上电瞬间,由于电容两端电压不能突变,复位引脚为低电平,随着电容充电完成,复位引脚变为高电平,单片机开始正常工作。STM32 是低电平复位,当复位引脚为低电平时,系统进行复位操作,初始化各个寄存器,包括最重要的 PC 指针,但不包括 RAM。然后单片机从复位地址开始执行程序。

(四)调试接口电路

在程序开发过程中,常用的调试下载方式有 JTAG 和 SWD。JTAG(Joint Test Action Group)是一种国际标准测试协议,主要用于芯片内部测试。标准的 JTAG 接口是 4 线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。SWD(Serial Wire Debug)是一种和 JTAG 不同的调试模式,使用的调试协议也不一样。与 JTAG 的 20 个引脚相比,SWD 只需要 4 个(或者 5 个)引脚,结构简单,节省了 I/O 口和板子空间。例如,正常的 JTAG 需要 20 管脚,而 J-Link 的 SWD 只需要 2 根线(PA13/JTMS/SWDIO、PA14/JTCK/SWCLK)就够了(加上电源线也就 4 根)。SWD 在高速模式下面更加可靠,在大数据量的情况下面 JTAG 下载程序会失败,但是 SWD 发生的几率会小很多。

(五)启动电路

STM32 有三种启动模式,由 BOOT0 和 BOOT1 引脚在复位时的状态决定。一般情况下,如果想用串口下载代码,则必须配置 BOOT0 为 1,BOOT1 为 0;如果想让 STM32 按下复位键就开始跑代码,则需要配置 BOOT0 为 0,BOOT1 随便设置都可以。从主 Flash 启动是最常见的启动方式,代码存储在 STM32 的内置 Flash 中,启动时内置 Flash 的起始地址将被重映射到 0x00000000 地址,代码将在该处开始执行。从系统存储器启动时,内置 ROM 的起始地址将被重映射到 0x00000000 地址,代码在此处开始运行。ROM 中有一段出厂预置的代码,可通过 UART/CAN 或 USB 等将代码写入 STM32 的内置 Flash 中。从嵌入式 SRAM 中启动时,内置 SRAM 的起始地址将被重映射到 0x00000000 地址,代码在此处开始运行。这种模式适合调试,因为烧录程序过程中不需要擦写 Flash,速度较快,但掉电丢失。

三、设计要点与注意事项

(一)设计要点

  1. 晶振电路设计,包括电阻、电容的选择和作用。
    • 晶振选用 8MHz 的无源晶振,具有高精度、高频率稳定性、可靠性强等优良特性。晶振的输入输出端连接电阻,一般为 M 欧级,本系统中选用 1M 欧电阻,起到产生负反馈的作用,保证放大器能够工作在高增益的线性区。晶振两端的电容一般选择 10 - 40pF,起到使晶振两端的等效电容等于或接近于负载电容的作用,同时还能起到一定的滤波作用,滤除晶振波形中的高频杂波。一般情况下,增大电容会使振荡频率下降,而减小电容会使振荡频率升高。
  1. 复位电路采用手动复位的方式及原理。
    • 复位电路采用手动复位的方式,通过引入按键的使用达到手动复位的目的。STM32 是低电平复位,按键按下时,NRST 引脚和 GND 导通,从而在该引脚出产生一个低电平,从而实现单片机的复位。复位电路由一个按键、一个电容、一个上拉电阻组成。接上电源瞬间,电容等效于短路,此时 NRST 点为低电位接地,STM32 复位。当电容充电完成后,电容等效于开路,NRST 点电位回升为高电平。按下按键 KEY1,NRST 点接地变为低电平,STM32 复位。按键松开后,NRST 点回升为高电平。
  1. 电源稳压电路的分析,选用合适的稳压芯片。
    • 由于本系统所使用电源适配器提供的是 5V 的电压源,而系统所使用的 MCU 的正常工作电压是 3.3V,所以需要进行降压处理。该电路设计所采用的是 AMS1117 这一款正向低压降稳压器,选用的稳压 IC 是 AMS1117 系列的 3.3V 降压版本,其输出电压的精度为 1%,满足了降压精度的需求。同时由于其内部集成有过热保护和限流电路,所以在电源的使用过程中能够提供一定的安全保障。

(二)注意事项

  1. 走线要求,不走直角且尽量粗。
    • 走线不走直角可以减少信号反射和干扰,提高电路的稳定性。走线尽量粗可以降低电阻,减少电压降,提高电源的效率。
  1. 焊接技巧,温柔操作,及时上锡保护。
    • 焊接的时候要温柔,太大力会造成损坏。一小会不用焊笔就要上锡保护,防止焊笔氧化。
  1. 检查引脚连接、通断和排查问题的方法。
    • 先检查引脚是否接对,再检查通断,可使用万用表进行检测。然后逐个点的排查问题,如检查芯片引脚是否短接,可使用万用表来调试,不要相信肉眼。
  1. 芯片焊接步骤及注意事项。
    • 芯片焊接步骤为:粘锡拆引脚 - 粘锡分开引脚 - 对齐引脚再固定 - 放斜板子靠重力 - 引脚垂直焊笔来焊接 - 多的锡引到一起,用松香一点点除去。固定用的一排引脚锡也不要加太多,后面去掉很麻烦。一定要先确定好封装再去焊。
  1. 非正常短接的找错方法。
    • 用小刀割开导线,分段找问题。芯片的引脚拉长一点,有助于检查短接问题。
  1. PCB 绘制中的快捷键、注意事项和技巧。
    • 在 PCB 绘制中,合理设置铺铜和导线的间距可以宽一些,避免干扰。为自制的板子加入指示灯有助于调试。底层的墨擦掉,防止短路。输入线要粗,保证电源供应稳定。在焊盘上的 PCB 是转印纸上的镜像,绘制时要注意。原理图要让别人看得懂,方便后续维护和修改。

相关文章:

STM32 单片机最小系统全解析

STM32 单片机最小系统全解析 本文详细介绍了 STM32 单片机最小系统,包括其各个组成部分及设计要点与注意事项。STM32 最小系统在嵌入式开发中至关重要,由电源、时钟、复位、调试接口和启动电路等组成。 在电源电路方面,采用 3.3V 直流电源供…...

深度解析ElasticSearch:构建高效搜索与分析的基石原创

引言 在数据爆炸的时代,如何快速、准确地从海量数据中检索出有价值的信息成为了企业面临的重要挑战。ElasticSearch,作为一款基于Lucene的开源分布式搜索和分析引擎,凭借其强大的实时搜索、分析和扩展能力,成为了众多企业的首选。…...

【Python常用模块】_PyMySQL模块详解

课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)教程合集 👈👈…...

【算法思想·二叉树】最近公共祖先问题

本文参考labuladong算法笔记[拓展:最近公共祖先系列解题框架 | labuladong 的算法笔记] 0、引言 如果说笔试的时候经常遇到各种动归回溯这类稍有难度的题目,那么面试会倾向于一些比较经典的问题,难度不算大,而且也比较实用。 本…...

如何合并pdf文件,四款软件,三步搞定!

在数字化办公的浪潮中,PDF文档因其跨平台兼容性和安全性,成为了我们日常工作中不可或缺的一部分。然而,面对多个PDF文件需要整合成一个文件时,不少小伙伴可能会感到头疼。别担心,今天我们就来揭秘四款高效PDF合并软件&…...

仪表放大器AD620

AD623 是一款低功耗、高精度的仪表放大器,而不是轨到轨运算放大器。它的输入电压范围并不覆盖整个电源电压(轨到轨),但在单电源供电下可以处理接近地电位的输入信号。 AD620 和 AD623 都是仪表放大器,但它们在一些关键…...

【Qt网络编程】Tcp多线程并发服务器和客户端通信

目录 一、编写思路 1、服务器 (1)总体思路widget.c(主线程) (2)详细流程widget.c(主线程) (1)总体思路chat_thread.c(处理聊天逻辑线程&…...

SkyWalking 简介

SkyWalking是什么 skywalking是一个国产开源框架,2015年由吴晟开源 , 2017年加入Apache孵化器。skywalking是分布式系统的应用 程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。它是一款优秀的 APM(Application Performance Manag…...

语音合成(自然、非自然)

1.环境 Python 3.10.14 2.完成代码 2.1简陋版 import pyttsx3# 初始化tts引擎 engine pyttsx3.init()# 设置语音速度 rate engine.getProperty(rate) engine.setProperty(rate, rate - 50)# 设置语音音量 volume engine.getProperty(volume) engine.setProperty(volume, …...

redis简单使用与安装

redis redis 是什么 Redis 是一个开源的,使用 C 语言编写的,支持网络交互的,内存中的Key-Value 数据结构存储系统,支持多种语言,它可以用作数据库、缓存和消息中间件。 一、存储系统特性 内存存储与持久化 Redis 主要将数据存储在内存中,这…...

封装 WBXpopup 组件

这是Popup组件基于微博小程序&#xff0c;需要改变标签&#xff0c;以及一写方法 支持四个方向抽屉&#xff0c;以及中间弹出功能 // 用法 <template><wbx-view style"height: 100vh;"><!-- 对话框组件 --><wbx-view><wbx-text click&quo…...

【OJ刷题】双指针问题6

这里是阿川的博客&#xff0c;祝您变得更强 ✨ 个人主页&#xff1a;在线OJ的阿川 &#x1f496;文章专栏&#xff1a;OJ刷题入门到进阶 &#x1f30f;代码仓库&#xff1a; 写在开头 现在您看到的是我的结论或想法&#xff0c;但在这背后凝结了大量的思考、经验和讨论 目录 1…...

详解:Tensorflow、Pytorch、Keras(搭建自己的深度学习网络)

这是一个专门对Tensorflow、Pytorch、Keras三个主流DL框架的一个详解和对比分析 一、何为深度学习框架&#xff1f; 你可以理解为一个工具帮你构建一个深度学习网络&#xff0c;调用里面的各种方法就能自行构建任意层&#xff0c;diy你想要的DNN&#xff0c;而且任意指定学习…...

【CSS in Depth 2 精译_035】5.5 Grid 网格布局中的子网格布局(全新内容)

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一章 层叠、优先级与继承&#xff08;已完结&#xff09; 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位&#xff08;已完结&#xff09; 2.1 相对…...

Java是怎么处理死锁的

文章目录 避免死锁避免嵌套锁资源进行排序超时锁 检测死锁通过Java提供的API检查死锁情况jStack监控工具 Java 本身没有内置的机制自动处理死锁问题&#xff0c;但可以采取一些策略和技术来检测和避免死锁。 避免死锁 避免嵌套锁 尽可能减少嵌套锁操作&#xff0c;避免在一个…...

Effective Java 学习笔记 方法签名设计

目录 谨慎选择方法名称 不要过于追求提供便利的快捷方法 避免过长的参数列表 对于参数类型优先使用接口而不是类 对于boolean参数&#xff0c;要优先使用两个元素的枚举类型 本文接续前一篇文章聚焦Java方法签名的设计&#xff0c;方法签名包括了方法的输入和输出参数以及…...

毛利超70%、超70+智驾客户,这家AI数据训练服务商刚刚止亏

AI训练数据服务第一股海天瑞声终于迎来了“曙光”。 日前&#xff0c;海天瑞声发布2024年半年报显示&#xff0c;上半年其实现营收9242.63万&#xff0c;同比增长24.13%&#xff1b;实现净利润41.64 万元&#xff0c;不过同比去年同期的亏损1724.14万元&#xff0c;扭亏为盈。…...

本地部署高颜值某抑云音乐播放器Splayer并实现无公网IP远程听歌

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

图像压缩编码(4)--H.26x系列视频压缩编码_2

目录 H.261 视频编码标准 H.261的编码与解码 1&#xff09; 帧内/帧间编码 2&#xff09;运动补偿 3&#xff09;量化 4&#xff09;环路滤波器 5&#xff09;缓存器 压缩数据的分层 数据复用结构 H.264的编码与解码 H.261 视频编码标准 实际应用时&#xff0c;要求有…...

JS渲染锻炼输入表单

前言 上篇文章为大家展现了好看的信息窗口&#xff0c;接下来我们跟着流程图看下一步 之前我们的带点击事件已经添加完毕&#xff0c;下一步就是当用户点击的时候&#xff0c;渲染锻炼形式&#xff0c;当然这是一个标签&#xff0c;可以提供给用户输入锻炼形式 实例 ● 我…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解

文章目录 一、开启慢查询日志&#xff0c;定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...

深度解析云存储:概念、架构与应用实践

在数据爆炸式增长的时代&#xff0c;传统本地存储因容量限制、管理复杂等问题&#xff0c;已难以满足企业和个人的需求。云存储凭借灵活扩展、便捷访问等特性&#xff0c;成为数据存储领域的主流解决方案。从个人照片备份到企业核心数据管理&#xff0c;云存储正重塑数据存储与…...

旋量理论:刚体运动的几何描述与机器人应用

旋量理论为描述刚体在三维空间中的运动提供了强大而优雅的数学框架。与传统的欧拉角或方向余弦矩阵相比&#xff0c;旋量理论通过螺旋运动的概念统一了旋转和平移&#xff0c;在机器人学、计算机图形学和多体动力学领域具有显著优势。这种描述不仅几何直观&#xff0c;而且计算…...

JS的传统写法 vs 简写形式

一、条件判断与逻辑操作 三元运算符简化条件判断 // 传统写法 let result; if (someCondition) {result yes; } else {result no; }// 简写方式 const result someCondition ? yes : no;短路求值 // 传统写法 if (condition) {doSomething(); }// 简写方式 condition &…...

【Redis】Redis 的持久化策略

目录 一、RDB 定期备份 1.2 触发方式 1.2.1 手动触发 1.2.2.1 自动触发 RDB 持久化机制的场景 1.2.2.2 检查是否触发 1.2.2.3 线上运维配置 1.3 检索工具 1.4 RDB 备份实现原理 1.5 禁用 RDB 快照 1.6 RDB 优缺点分析 二、AOF 实时备份 2.1 配置文件解析 2.2 开启…...