--- tags: [source-summary] type: source source: "STM32学习笔记(三教程综合) — 环境搭建与GPIO详解" author: "铁头山羊 / 江协科技 / STM32 HAL库入门" date: 2026-07-09 url: "" created: 2026-07-09 updated: 2026-07-09 --- # 三教程综合 STM32 入门笔记 ## 来源 基于三个教程系列的 ASR 转录文本与配套源码整理: - **铁头山羊 HAL 库教程**(B站):CubeMX + HAL 库为主,偏原理讲解,GPIO 输出速度与 EMI 讲解深入 - **江协科技标准库教程**(B站):标准库(StdPeriph)为主,工程模板、Delay 模块(SysTick 寄存器操作)、LED/Key/Buzzer/LightSensor 模块化代码 - **STM32 HAL库入门**(B站):CubeMX 图形化配置演示,闪灯/按钮实验 ## 新增原始笔记 位于 `raw/Joplin/嵌入式+Linux/STM32学习笔记(三教程综合)/`: ### Note 1:`STM32-环境搭建与工程模板.md` 完整覆盖: - STM32 vs 51 差异对比(铁头山羊第一课核心观点:零基础可直接学 STM32) - Keil MDK 安装(含 Device Pack、注册授权、ST-Link 驱动) - CubeMX + HAL 库方案定位 - 项目五目录结构(Start/User/Hardware/Library/System) - `stm32f10x_conf.h` 外设开关机制 - 启动文件选择(MD/LD/HD) - Delay 模块(SysTick 寄存器操作原理:LOAD/VAL/CTRL/COUNTFLAG) - main.c 模板(标准库八字诀:时钟→结构体→配置→初始化) - 3 种 GPIO 电平操作方法 - 标准库 vs HAL 库对比表格 - 烧录方法(ST-Link SWD、FlyMcu 串口 ISP、bootloader 擦除恢复) - GPIO 初始化寄存器级原理(CRL/CRH 分析) - 常见问题排查表 ### Note 2:`STM32-GPIO详解.md` 完整覆盖: - GPIO 内部结构框图(P-MOS/N-MOS/ODR/IDR/I/O Pad) - 8 种工作模式详解(附 P-MOS/N-MOS 状态表) - 4 种输出:推挽、开漏、复用推挽、复用开漏 - 4 种输入:浮空、上拉、下拉、模拟 - 推挽 vs 开漏对比(含线与能力、电平兼容) - 输出速度详解(2/10/50MHz、上升/下降时间、EMI 关系、选型建议) - CRL/CRH 寄存器 MODE 位含义 - LED 驱动代码(低电平点亮电路原理、模块化 LED.c、LED 闪烁、LED 流水灯) - HAL 库等效 API 对照表 - 蜂鸣器模块代码 - Key 模块(上拉输入 + 延时消抖 + 等待松手) - 光敏传感器控制蜂鸣器 - 8 种输入模式选择指南 - 常见误区纠正(速度、上拉下拉、开漏、浮空等) ### Note 3:`STM32学习笔记(上)-UART串口通信.md` 完整覆盖: - 串行 vs 并行、同步 vs 异步通信概念 - UART 数据帧结构(起始位/数据位/校验位/停止位) - 波特率与位时序 - TX/RX 交叉连接 - STM32 USART 模块结构、GPIO 引脚配置(PA9/PA10) - CubeMX 配置与标准外设库初始化 - 轮询发送(TXE/TC 标志位) - 发送字节/数组/字符串/数字 - printf 重定向(fputc + MicroLIB)与自封装 Serial_Printf - 中断接收(RXNE 中断 + NVIC 配置) - 接收标志位与数据变量、回传实验 - 中断进阶:命令解析控制 LED 可变间隔闪烁 - 常用问题:波特率不一致、TX 接 TX、MicroLIB、接收丢数据、电平转换 ### Note 4:`STM32学习笔记(中)-I2C通信.md` 完整覆盖: - I2C 总线结构(SCL/SDA/上拉电阻) - 开漏输出与线与逻辑、I2C vs UART 对比 - 起始/停止条件、数据帧格式、ACK/NACK - 速度模式(SM 100kHz / FM 400kHz) - STM32 I2C 外设配置(引脚/重映射/复用开漏/时钟) - 内部结构框图与关键标志位(SB/ADDR/AF/TXE/BTF/RXNE/BUSY) - 硬件 I2C 写数据完整流程(等待空闲→起始位→寻址→发数据→停止位) - ADDR 清零规范(先读 SR1 再读 SR2) - 硬件 I2C 读数据流程(重复起始位 + NACK 结束) - 软件 I2C GPIO 模拟实现(Start/Stop/SendByte/RecvByte/Ack) - MPU6050 六轴传感器驱动(寄存器读写、初始化、数据读取) - 硬件 vs 软件 I2C 对比表格 - 常见问题:总线锁死、上拉电阻、地址冲突 ### Note 5:`STM32学习笔记(下)-SPI通信.md` 完整覆盖: - SPI 四线制(SCLK/MOSI/MISO/NSS)与一主多从结构 - 全双工数据交换机制(16 位环形移位寄存器) - CPOL/CPHA 定义的 4 种时序模式详解 - MSB First vs LSB First - STM32 SPI 外设配置(CubeMX 全双工主机模式/软件 NSS/波特率计算) - 标准外设库初始化代码 - HAL 库 API:HAL_SPI_Transmit / Receive / TransmitReceive - NSS 手动控制与接收缓冲区初值 0xFF 要点 - W25Q64 Flash 存储结构(块/扇区/页) - W25Q64 指令集:写使能(0x06)、扇区擦除(0x20)、页编程(0x02)、读数据(0x03)、读 ID(0x9F) - 等待忙(状态寄存器 BUSY 位查询 + 超时保护) - 完整实验:LED 状态保存与恢复(按钮控制 + Flash 存储,断电不丢失) - 软件 SPI GPIO 模拟实现(Start/Stop/SwapByte 模式 0) - 硬件 vs 软件 SPI 对比表格 - 常见问题:NSS 未拉低、模式不匹配、忘记写使能、跨页写入、擦除时间长 ## 与现有 wiki 的关系 - 现有 [[STM32-环境搭建]]、[[STM32-GPIO]] 是精炼的 wiki 摘要层 - 现有 [[STM32-中断系统]]、[[STM32-时钟系统]]、[[STM32-定时器]]、[[STM32-I2C]]、[[STM32-ADC]]、[[STM32-DMA]]、[[STM32-PWR]]、[[STM32-BKP与RTC]]、[[STM32-WDG]]、[[STM32-FLASH]] 是 wiki 综合笔记 - 这 11 篇原始笔记是更详细的课程级笔记,保留了教师的讲解顺序和示例代码 - 现有 [[source-jiangxie-stm32]]、[[source-hal-library-best]]、[[source-tietoushanyang]] 是单教程来源摘要 - 本文是三个教程的综合型原始笔记集合,可直接作为 wiki 的补充参考来源