目录
[1️⃣ 电源类引脚(Power Pins)](#1️⃣ 电源类引脚(Power Pins))
[2️⃣ 晶振IO(Oscillator Pins)](#2️⃣ 晶振IO(Oscillator Pins))
[3️⃣ 下载IO / 调试IO(Debug / SWD / JTAG Pins)](#3️⃣ 下载IO / 调试IO(Debug / SWD / JTAG Pins))
[4️⃣ BOOT IO(启动模式引脚)](#4️⃣ BOOT IO(启动模式引脚))
[5️⃣ 复位IO(Reset Pin)](#5️⃣ 复位IO(Reset Pin))
[6️⃣ 最小系统](#6️⃣ 最小系统)
[7️⃣ GPIO(General Purpose I/O)](#7️⃣ GPIO(General Purpose I/O))
[1️⃣ VDDA / VSSA(模拟电源)是干嘛的?](#1️⃣ VDDA / VSSA(模拟电源)是干嘛的?)
[2️⃣ 什么是晶振?](#2️⃣ 什么是晶振?)
[3️⃣ STM32最小系统 + GPIO 总线结构图流程](#3️⃣ STM32最小系统 + GPIO 总线结构图流程)
下列出的这些都是 STM32 MCU 的引脚分类,我来帮你系统梳理一遍,讲清楚每种引脚的作用、用途和为什么重要。我们分模块一一讲:
一、引脚分类
1️⃣ 电源类引脚(Power Pins)
| 引脚 | 作用 |
|---|---|
| VDD / VSS | MCU 主电源(VDD 正极,VSS 接地) |
| VDDA / VSSA | 模拟电源(ADC、DAC、比较器等模拟模块用) |
| VREF+ / VREF- | ADC/DAC 参考电压,引入稳定电压以保证精度 |
| VBAT | 实时时钟 RTC 电源,当主电源断电时保持 RTC 和备份寄存器数据 |
总结:电源引脚保证 MCU 及其内部模块正常工作。VBAT 用于保持 RTC 持久化。
2️⃣ 晶振IO(Oscillator Pins)
| 引脚 | 作用 |
|---|---|
| HSE / LSE 输入/输出 | 连接外部晶振或晶体(High Speed / Low Speed) |
| HSE/ LSE OSC 输入输出引脚 | 提供 MCU 主时钟或 RTC 时钟 |
| HSE → 主晶振(主系统频率) | |
| LSE → RTC 晶振(低速 32.768kHz,低功耗计时) |
作用 :晶振 IO 用来连接晶振或外部时钟源,为 MCU 提供精准时钟信号。
例子:STM32F4 用 HSE 连接 8 MHz 晶振,系统经过 PLL 可达到 168 MHz。
3️⃣ 下载IO / 调试IO(Debug / SWD / JTAG Pins)
| 引脚 | 作用 |
|---|---|
| JTMS / SWDIO | 串行调试数据线 |
| JTCK / SWCLK | 串行调试时钟线 |
| JTDI / JTDO / NJTRST | JTAG 接口的其他控制信号 |
| 用途 | MCU 上电后用这些引脚通过 ST-Link / J-Link 下载程序、调试、断点设置 |
总结 :下载 IO 是专门给调试和编程用的,不用在实际功能电路里占用。
注意:现代 STM32 常用 SWD(2线)即可,JTAG(5~6线)一般用于复杂调试。
4️⃣ BOOT IO(启动模式引脚)
| 引脚 | 作用 |
|---|---|
| BOOT0 / BOOT1 | 配合内部寄存器设置 MCU 启动模式 |
| 启动模式 | MCU 上电或复位时决定启动地址: |
-
用户 Flash → 正常程序启动
-
系统内置 Bootloader(ROM) → UART / USB 下载程序
-
SRAM → 特殊调试启动模式 |
总结:BOOT IO 决定 MCU 上电跑哪个程序,是最小系统必备引脚之一。
5️⃣ 复位IO(Reset Pin)
| 引脚 | 作用 |
|---|---|
| NRST | 外部复位引脚 |
| 作用 | 外部按键或电路触发 MCU 复位,相当于"重启按钮" |
| 特点 | 可通过外部低电平或上拉电阻触发复位,同时 MCU 内部也可软件复位 |
6️⃣ 最小系统
把 上面 5 类引脚连接好就可以构成 STM32 的最小系统(Minimal System):
-
电源(VDD/VSS/VDDA/VSSA/VREF+/VBAT)
-
晶振(HSE / LSE)
-
下载 IO(SWD/JTAG)
-
BOOT IO(BOOT0/BOOT1)
-
复位 IO(NRST)
只要最小系统连好,MCU 就能上电启动、下载程序、正常运行。
7️⃣ GPIO(General Purpose I/O)
-
普通元器件 → LED、按键、蜂鸣器、继电器等直接接 GPIO
-
专用器件 → 需要 MCU 专用总线的,如 I2C、SPI、FSMC、SDIO、DCMI 等,需要接到 MCU 支持对应功能的 GPIO(复用功能)
-
剩余 IO → 根据项目需要可引出或不使用
STM32 每个 IO 都可复用成多种功能,比如一个 IO 可以做 GPIO,也可以做 USART TX、SPI SCK 或 ADC 输入。
🔹 总结一张图(逻辑上理解)
最小系统:
├─ 电源类:VDD/VSS/VDDA/VSSA/VREF+/VBAT
├─ 晶振IO:HSE/LSE输入输出,提供主时钟和RTC时钟
├─ 下载IO:JTMS/JTCK/JTDI/JTDO/NJTRST,用于调试/下载
├─ BOOT IO:BOOT0/BOOT1,决定启动模式
└─ 复位IO:NRST,用于外部复位
GPIO:
├─ 普通GPIO:LED、按键、蜂鸣器
└─ 复用GPIO:I2C/SPI/USART/SDIO/FSMC/DCMI等总线
记住:最小系统只保证 MCU 能正常启动、下载和复位;GPIO 才是你和外设真正交互的引脚。
二、疑问点:
1️⃣ VDDA / VSSA(模拟电源)是干嘛的?
含义:
-
VDDA → 模拟电源正极
-
VSSA → 模拟电源地(接地)
-
和 VDD/VSS(数字电源) 是分开的
作用:
STM32 内部有一些模拟模块,例如:
-
ADC(模数转换器):把电压转换成数字
-
DAC(数模转换器):把数字转换成电压
-
比较器(COMP):判断电压高低
这些模块对电源噪声非常敏感:
-
如果用 VDD(数字电源),数字电路开关会产生噪声,ADC/DAC 精度就会下降
-
所以需要 专门的模拟电源 VDDA / VSSA 提供稳定、低噪声的电压
举例:
- 你测量一个传感器输出电压 2.34V,如果 VDDA/ VSSA 噪声大,ADC 可能读成 2.30V 或 2.38V → 精度下降
💡 一句话:
VDDA / VSSA 就是给 STM32 内部"敏感模拟模块"供干净电源的,引起 ADC/DAC 测量精度高。
2️⃣ 什么是晶振?
定义:
-
晶振 = 晶体振荡器 (Crystal Oscillator)
-
它是一个产生固定频率的电信号的器件
-
MCU 内部的时钟(CPU 执行指令速度、外设时序)需要依赖晶振提供频率
STM32 中晶振用途:
-
主晶振 HSE(High Speed External)
- 提供系统主时钟 → 决定 CPU 主频
-
低速晶振 LSE(Low Speed External)
- 提供 RTC 时钟 → 保持实时时钟,即使 MCU 进入低功耗模式
例子:
-
HSE 外接 8MHz 晶振 → MCU 通过 PLL 产生 168MHz CPU 时钟
-
LSE 外接 32.768kHz 晶振 → RTC 秒计时稳定
💡 一句话:
晶振就是 MCU 的"心跳",控制 MCU 的执行节奏和外设时序。
3️⃣ STM32最小系统 + GPIO 总线结构图流程
+----------------+
| MCU |
| STM32系列 |
+----------------+
| | | |
-------------+ | | +----------------
| | | |
电源类 晶振IO 下载IO BOOT/复位IO
(VDD/VSS/VDDA) (HSE/LSE) (SWD/JTAG) (BOOT0/BOOT1/NRST)
| | | |
提供数字/模拟电源 提供时钟信号 下载程序/调试/复位 MCU
|
+--------------------------------+
| |
GPIO --------------------------- 外设总线复用
| |
普通GPIO(LED/按键/蜂鸣器) I2C/SPI/USART/SDIO/FSMC/DCMI
| |
+--------------------------------+
|
外部模块
(显示屏/传感器/存储/WiFi/Bluetooth)
说明:
-
最小系统部分:
- 电源 + 晶振 + 下载IO + BOOT/复位 → MCU 能正常启动、下载程序
-
GPIO部分:
-
普通GPIO → 控制 LED、蜂鸣器、按键
-
复用GPIO → 连接外设总线,如 I2C、SPI、FSMC、DCMI
-
-
外设模块:
- MCU 通过 GPIO / 总线控制外部器件,如显示屏、传感器、EEPROM、无线模块
这个结构图展示了 STM32 系统从最小系统到 GPIO 再到外设模块的完整关系。