完整开发板讲解
以下是STM32硬件的基础概念
| STM32 硬件概念 | 通俗解释 |
|---|---|
| Cortex-M3 内核 | 所有代码运行的核心 CPU |
| Flash 闪存 | 永久存储代码,断电不丢 |
| SRAM 内存 | 程序运行时的变量、数组、缓存 |
| 外设(GPIO、串口、定时器) | 一个个可调用的硬件功能模块 |
| 寄存器 | 控制硬件的唯一参数,改值就改硬件状态 |
| 总线传输 | 内核通过总线读写外设寄存器 |
| BOOT 启动模式 | 决定上电从哪执行代码 |
| 中断 Interrupt | 硬件触发,打断主程序执行专属函数 |
| DMA | 后台自动干活,不占用 CPU |
下面是正点原子 Mini STM32F103RCT6 开发板,是国内非常经典的 STM32F1 学习开发板,芯片型号STM32F103RCT6:Flash=256KB,SRAM=48KB,LQFP64 封装,比 C8T6 资源更大。把板子上每一块区域对照讲解,和原理图、架构一一对应。
🔹核心芯片区(板子中间)
黑色大芯片(LQFP64):STM32F103RCT6 主控,Cortex‑M3 内核、Flash、SRAM 全部在这个芯片内部。所有外设 GPIO、串口、定时器、ADC 都封装在芯片内部,外部只是引出引脚。
两个金属圆柱晶振
- 8.000M 晶振:HSE 高速外部晶振,系统主时钟,芯片 PLL 倍频到 72MHz 主频。
- 32.000K(32.768K)晶振:LSE 低速晶振,给 RTC 实时时钟提供时钟源,用来做万年历。
🔹下侧区域
4 个独立按键:
- 最上方按键:RESET 复位按键,按下触发 NRST 复位,程序整体重启,回到上电初始状态。
- 下面 3 个普通按键:自定义功能按键,接 GPIO,用来做输入检测、触发中断。
USB‑232 芯片(CH340):USB 转串口芯片。电脑 USB 可以直接和 STM32 的串口通信,打印日志,相当于 软件程序控制台输出。不需要额外串口模块。
Mini‑USB 接口:供电 + 串口通信。
🔹右侧区域
SD 卡卡槽:外接 TF 卡,可以读写文件,做数据存储。
电源开关(蓝色拨动开关):板子总电源开关。
电源电路(黑色稳压芯片、滤波电容):5V 输入稳压输出 3.3V,给 STM32 芯片和外设供电,旁边圆形是滤波电容。
🔹左侧 & 上方黄色排针(外接外设)
- LCD/TFTLCD 排针:接彩色液晶屏幕。
- OLED 排针:接 OLED 显示屏。板子把芯片所有 GPIO 引脚全部引到黄色排针上,用来外接 LED、传感器、电机等外设。
- PS/2 接口:可以接老式键盘鼠标。
- BOOT 启动配置跳线帽(黄色小跳线)
- BOOT0 接 GND:从 Flash 启动(正常跑我们烧写的程序)
- BOOT0 接 3.3V:进入系统 ISP 串口下载模式。
🔹其他板载资源
板载 LED 指示灯:板上小 LED,对应 GPIO 输出,用来调试程序运行状态。
24L01 无线模块插座:可以插入 NRF24L01 无线通信模块。
AT24C02 EEPROM 芯片(右下角 8 脚芯片):掉电保存小量数据,类似小型持久化存储。
和最小系统板的区别
板上元件对应说明:
- MCU(中间 LQFP48 芯片):STM32F103C8T6 主控
- 8M 主晶振 Y1:系统时钟,倍频到 72MHz
- PC13 指示灯:最经典板载 LED
- BOOT0 跳线帽:启动模式选择(跳线接 3.3V 进入串口 ISP 下载)
- RESET 复位按键:NRST 引脚,按下复位
- Micro USB:5V 供电,部分版本带 CH340 串口
- SWD 调试排针:GND、3V3、SWCLK、SWDIO,接 ST-LINK 下载调试
- AMS1117-3.3V 稳压芯片:5V 转 3.3V 给 MCU 供电
STM32F103C8U6 原理图
这是STM32F103C8T6 单片机最小系统的原理图,一共分为 8 个模块:电源、电源指示灯、MCU 主控、BOOT 启动配置、晶振、复位、SWD 下载调试、滤波电容。
1 电源模块(左上角)
- J1:USB‑M 接口,USB 输入 5V 电压。
- U1:ME6211LDO 低压差稳压芯片,把 USB 的 5V 转换成单片机需要的3.3V(VCC3V3)。
- C1 (0.1μF)、C2 (1μF):输入滤波电容,滤除 5V 电源噪声。
- C3 (1μF)、C4 (0.1μF):输出滤波电容,稳定输出 3.3V。
- VSS 引脚接 GND;CE 是使能脚,这里直接接 5V,芯片一直处于开启工作状态。
2 电源指示灯(右上角)
- D1:发光二极管;R1 (1K):限流电阻,防止 LED 烧坏。
- 原理:3.3V 上电,电流流过 D1、R1 到 GND,LED 点亮,表示板子供电正常。
3 MCU 主控(中间大芯片 U2 STM32F103C8T6)
STM32 主芯片,所有外设都围绕它。
表格结构总览
| 列名 | 含义 |
|---|---|
| 引脚号 | 芯片物理引脚编号(1~48),对应TQFP-48封装的实际管脚。 |
| 引脚名称 | 该引脚在芯片上的默认功能名称。 |
| 类型 | 引脚的电学特性:I(输入)、O(输出)、I/O(双向)、S(电源/地)。 |
| I/O口电平 | 标注FT表示兼容5V电压,空白则表示仅支持3.3V。这是硬件连接的关键安全信息。 |
| 主功能 | 复位后该引脚默认的功能,通常是普通的GPIO口(如PA0、PB1)。 |
| 默认复用功能 | 通过配置寄存器,该引脚可实现的其他片上外设功能(如串口、定时器、ADC等)。 |
| 重定义功能 | 通过“重映射”功能,可以将某些外设的引脚重新映射到其他GPIO上,以优化PCB布线或避免冲突。 |
特殊功能引脚:
- VBAT(1号):为内部RTC(实时时钟)和后备寄存器供电。如果不使用,可直接接VDD(3.3V)。
- OSC_IN/OSC_OUT(5、6号):主时钟晶振(通常接8MHz)的输入输出。
- NRST(7号):硬件复位引脚,低电平有效。
- BOOT0(44号):与BOOT1(PB2)配合,决定芯片启动模式(从Flash、系统存储器或SRAM启动)。
4 BOOT 启动电路(右上第二块)
BOOT0、BOOT1 引脚电平决定 STM32 上电从哪里启动程序:
- P1:3Pin 排针跳线帽。
- R2、R3 都是 10K 电阻。
- 跳线帽短接 0 号:BOOT0=0,从主闪存 (Flash) 启动(正常运行我们烧录的程序,日常使用模式)。
- 跳线帽短接 1 号:BOOT0=1,从系统存储器启动(串口下载模式)。
BOOT1 这里直接下拉到 GND 固定为 0。
5 晶振电路(右中)
- Y1:8MHz 外部高速晶振,STM32 的系统时钟源。
- C10、C11:18pF 负载电容,配合晶振起振,接 OSCIN、OSCOUT。
单片机内部 PLL 锁相环可以把 8M 倍频到 72MHz,作为 CPU 运行主频。
6 复位电路(左下)
- R14 (10K) 上拉电阻,C27 (0.1μF) 电容,RESET1 复位按键。
- 上电自动复位:刚上电,电容 C27 电压为 0 → NRST 低电平,芯片复位;电容充电后 NRST 被 R14 拉高到 3.3V,单片机开始运行。
- 手动复位:按下 RESET1 按键,NRST 直接拉到 GND,松开后恢复,实现手动重启单片机。
7 SWD 调试下载接口(下中)
- P4:4Pin 排针,SWD 下载接口,用 ST‑Link 调试器。
- SWDIO:数据;SWCLK:时钟;R13 (10K) 上拉 SWDIO,R15 (10K) 下拉 SWCLK。
SWD 只需要 4 根线(3.3V、GND、SWDIO、SWCLK),实现程序烧写 + 在线调试。
8 滤波电容(右下角)
C5‑C9,5 个 100nF 电容,并联在 VCC3V3 和 GND 之间。 作用:电源去耦滤波,抑制电源纹波噪声,保证单片机供电稳定。
整体工作流程
USB 输入 5V → ME6211 转为 3.3V,LED 电源灯亮; 3.3V 给 STM32 芯片供电;8M 晶振提供时钟;上电复位后;根据 BOOT 跳线选择启动模式;通过 SWD 接口下载程序,单片机运行代码。
最小系统 = 电源 + 复位 + 时钟 + 启动配置 + 下载接口,缺一不可。
系统架构
这张图是一张非常经典的STM32系列微控制器(基于ARM Cortex-M3内核,大概率是STM32F103系列)的系统架构框图。
它揭示了芯片内部各个功能模块是如何连接、如何协同工作的。为了方便理解,我们可以从核心、总线、存储以及外设四个维度来拆解这张图:
1. 核心部分 (左上角)
- Cortex-M3:这是芯片的“大脑”(CPU),负责执行代码和处理数据。
- 它通过三条主要的内部总线与外界交互:
- ICode (指令总线):专门用于从Flash(存储器)中读取指令(程序代码)。
- DCode (数据总线):专门用于读写数据,比如读取变量、常量。
- System (系统总线):用于访问SRAM(内存)和外设。
2. 存储与接口 (中上部)
- Flash接口 & Flash:存放程序代码和只读数据的地方。
- SRAM:芯片内部的静态随机存取存储器(内存),存放正在运行的变量和数据。
- FSMC (可变静态存储控制器):可以外扩NOR Flash、SRAM或NAND Flash等外部存储器。
- SDIO:SD卡接口控制器,可连接SD卡存储数据。
3. 总线矩阵 (正中央,多路交叉开关):这是系统的“交通枢纽”。它将CPU、DMA控制器、Flash、SRAM以及各个外围总线连接在一起。
- AHB系统总线 (高级高性能总线):是整个系统最快的主干道,直接连接内核、存储器和桥接器。
- RCC (复位和时钟控制):管理整个芯片的复位信号和各个模块的时钟频率。
4. 桥接器 (桥接1 和 桥接2):因为AHB总线速度很快,但很多外部设备(如GPIO、串口)不需要那么高的速度,所以通过“桥接器”降速,连接到两条APB (高级外围总线)上:
- APB1 (低速外设总线):连接了功耗较低或对速度要求不高的外设,如:DAC、PWR、BKP、bxCAN、USB、I2C、UART4/5、SPI2/3、IWDG、WWDG、RTC、TIM2/3/4/5/6/7 等。
- APB2 (高速外设总线):连接了速度较快的系统外设,如:ADC1/2/3、USART1、SPI1、TIM1/8、GPIOA-G、EXTI、AFIO 等。
5. 直接内存访问 (DMA)
- DMA1 和 DMA2:位于图左侧。它们的作用是**“搬运工”。允许外设(如ADC、串口、SDIO)和内存(SRAM/Flash)之间直接传输数据,而不需要CPU参与**。这大大解放了CPU,让它有时间处理其他复杂运算。
- DMA 请求:图下方的长箭头代表外设向DMA发出的请求信号(比如ADC转换完了数据,请求DMA搬走),DMA收到请求后,会通过“总线矩阵”去搬数据。
6. 一个重要的细节:DCode 与 DMA 的区别:图中左上角能看到DMA箭头直接连向总线矩阵。这意味着:
- DCode:是CPU在读取数据时走的专用通道,速度和效率最高。
- DMA:是外设在不经过CPU的情况下,直接搬运数据走的路。
常见名词介绍
| 英文缩写 | 名称 | 英文缩写 | 名称 |
|---|---|---|---|
| NVIC | 嵌套向量中断控制器 | CAN | CAN通信 |
| SysTick | 系统滴答定时器 | USB | USB通信 |
| RCC | 复位和时钟控制 | RTC | 实时时钟 |
| GPIO | 通用IO口 | CRC | CRC校验 |
| AFIO | 复用IO口 | PWR | 电源控制 |
| EXTI | 外部中断 | BKP | 备份寄存器 |
| TIM | 定时器 | IWDG | 独立看门狗 |
| ADC | 模数转换器 | WWDG | 窗口看门狗 |
| DMA | 直接内存访问 | DAC | 数模转换器 |
| USART | 同步/异步串口通信 | SDIO | SD卡接口 |
| I2C | I2C通信 | FSMC | 可变静态存储控制器 |
| SPI | SPI通信 | USB OTG | USB主机接口 |