硬件清单与学习进度存档
创建日期 :2026-05-27 | 最后更新 :2026-05-28
用途 :防止会话丢失后需要重新说明所有背景,下次直接读此文件即可恢复上下文。
主学平台 :DshanMCU-F407(STM32F407ZGT6,Cortex-M4)
目标:2026年暑假实习,打好单片机基础,后续学 Linux
一、核心开发板
| 板子 | 主控 | 角色 |
|---|---|---|
| DshanMCU-F407 工控主控开发板 | STM32F407ZGT6 | 主学平台,所有代码跑在上面 |
| 3.5寸 SPI TFT 触摸显示屏 | ST7796S + 触摸 | 显示、交互 |
| STM32F030 继电器开关控制板 | STM32F030 | RS485 从站(后续用) |
| STM32F030 温湿度蜂鸣器采集板 | STM32F030 | RS485 从站(后续用) |
| STM32F103 工控主控开发板 | STM32F103 | 第二台开发机(后续做 RS485 对端) |
二、外接模块清单
| # | 模块名称 | 核心用途 | 通信接口 | 适用知识点 |
|---|---|---|---|---|
| 1 | ADXL345 三轴加速度计 | 检测三轴加速度、倾斜、震动 | SPI/I2C | SPI/I2C 通信(后期) |
| 2 | ESP-01S (ESP8266) WiFi 串口模块 | 单片机设备联网、远程通信 | UART (AT 指令) | UART 收发、字符串解析 |
| 3 | EEPROM + 光敏电阻二合一模块(百问网) | 光强检测 + 断电永久数据存储 | I2C + GPIO | I2C 通信、ADC |
| 4 | HS0038+DS18B20+DHT11 三合一传感器底板(百问网) | 红外遥控接收、高精度测温、环境温湿度 | GPIO 中断 + OneWire | 外部中断、NEC 解码、精准延时 |
| 5 | TTL 转 RS485 电平转换模块 | 单片机 TTL 串口转工业 485 差分信号 | UART → RS485 | RS485 工业通信 |
| 6 | NEO-6M GPS 卫星定位模块 | 获取经纬度、海拔、UTC 时间 | UART (NMEA 协议) | UART 接收、数据解析 |
| --- | USB 转 TTL 串口模块(CH340) | 电脑串口调试 | USB→UART | 调试工具 |
| --- | STM32 扩展转接板 | 把开发板引脚分类(GPIO、SPI、I2C、串口),方便接线 | --- | 辅助工具 |
| --- | 4pin 杜邦端子连接线 | 扩展板和其他模块快速接线 | --- | 辅助工具 |
三、扩展板引脚定义(51pin)
由上到下排列,上为引脚,下为模块/板子。
| 序号 | 引脚名 | 序号 | 引脚名 | 序号 | 引脚名 |
|---|---|---|---|---|---|
| 1 | BOOT0 | 18 | PA6 | 35 | PB13 |
| 2 | AKEY0 | 19 | PC4 | 36 | PB15 |
| 3 | VBAT | 20 | PB1 | 37 | PD14 |
| 4 | PB9 | 21 | PE1 | 38 | PD10 |
| 5 | PE4 | 22 | PB4 | 39 | PD8 |
| 6 | PE6- | 23 | PB5 | 40 | PD12 |
| 7 | PF1 | 24 | PB7 | 41 | PG8 |
| 8 | PF3 | 25 | 3.3V | 42 | PC7 |
| 9 | PF5 | 26 | GND | 43 | PC9 |
| 10 | PF7 | 27 | GND | 44 | PA15 |
| 11 | PC0 | 28 | 5V | 45 | PD0 |
| 12 | PC2 | 29 | PG7 | 46 | PD2 |
| 13 | VREF | 30 | PE7 | 47 | PC11 |
| 14 | PA2 | 31 | PE9 | 48 | PD4 |
| 15 | PB10 | 32 | PE11 | 49 | PD6 |
| 16 | PB0 | 33 | PE13 | 50 | PG9 |
| 17 | PA4 | 34 | PE15 | 51 | PG11 |
| 52 | PG13 |
供电引脚:
- 3.3V:引脚 25
- GND:引脚 26、27
- 5V:引脚 28
四、视频学习进度
4.1 韦东山老师视频(全部已看完)
这是"搭建开发环境 → 学习到 UART"的完整任务,视频已全部看完 (理论已覆盖)。
[05-11] 按键控制LED(CubeMX没啥神秘的) ✅ 已看
[05-12] 光敏传感器控制蜂鸣器 ✅ 已看
[06-1] 中断概念的引入(按键丢失) ✅ 已看
[06-2] STM32中断体系结构 ✅ 已看
[06-3-1] GPIO中断编程(按键控制LED) ✅ 已看
[06-3-2] 中断HAL库代码解析 ✅ 已看
[06-4] 使用OLED进行调试(用LCD替代) ✅ 已看
[06-5-1] 使用定时器消除抖动 ✅ 已看
[06-5-2] 环形缓冲区概念与编程 ✅ 已看
[06-5-3] 使用环形缓冲区防止按键丢失 ✅ 已看
[07-1] 同步传输与异步传输 ✅ 已看
[07-2-1] UART协议 ✅ 已看
[07-2-2] STM32F103_UART硬件结构 ✅ 已看
[07-3-1] 串口编程_查询方式 ✅ 已看
[07-3-2] 串口编程_不实用的官方中断模式 ✅ 已看
[07-3-3] 串口编程_中断方式改造 ✅ 已看
[07-3-4] 串口编程_DMA方式 ✅ 已看
[07-4] 使用DMA+IDLE中断接收数据 ✅ 已看
[07-5] 完善UART程序与stdio ✅ 已看
4.2 当前实践进度
⚠️ 核心原则:视频已看完(理论),现在用模块做 hands-on 实践来真正掌握。
当前阶段:06-5 定时器 → 超声波测距 + 环形缓冲区 ← 从这里开始动手实践
下一步:07 UART → 用 ESP-01S / GPS 模块练手
之后: 面向对象封装 UART(另一个老师的任务)
4.3 另一个老师的任务(面向对象封装部分)
等韦东山主线实践完成后,再回头看这部分。
[04] 使用面向对象的思想构造结构体...
[05] 面向对象封装UART_编写框架
[06] 面向对象封装UART_编程
[07] 面向对象封装UART_调试
⚠️ 目前只需考虑到"05 使用面向对象思想",后面的暂时不用管。
五、学习路线总览(已结合目标审查 ✅)
5.1 目标:幻尔机器人实习
幻尔是做机器人的公司,机器人开发需要的单片机技能:
| 机器人需要的技能 | 对应学习路线中的内容 | 优先级 |
|---|---|---|
| 传感器读取(超声波、红外等) | 06-5 超声波测距、GPIO 中断 | ⭐⭐⭐ |
| 电机控制(PWM/舵机) | 定时器 PWM(路线中有规划) | ⭐⭐⭐ |
| 串口通信(与各模块通信) | 07 UART 全系列 | ⭐⭐⭐ |
| 工业总线(RS485) | 路线中的 RS485 专题 | ⭐⭐⭐ |
| IMU 姿态读取 | ADXL345(I2C/SPI 阶段) | ⭐⭐ |
| 多任务调度 | FreeRTOS(可后续加入) | ⭐⭐ |
| Linux 基础 | 实习中再学(你自己也说了) | ⭐ |
5.2 路线审查结论:没问题,合理
这条路线对幻尔机器人实习来说是扎实的基础路线,理由:
- 不缺不漏 --- GPIO → 中断 → 定时器 → UART → I2C/SPI → RS485,覆盖了嵌入式开发的全部核心外设
- RS485 是你的杀手锏 --- 大多数自学者只玩单板,你有三块板子做多机通信,这在工业/机器人场景非常实用
- 模块先练再理论深化 --- 先用超声波/ESP-01S/GPS 练手,再看 OOP 重构代码,符合"先会做,再做优雅"的学习曲线
- 节奏适合 --- 1~2 个月专注搞完这条线,暑假去实习时已经有足够的动手经验
建议实习前再加一个:FreeRTOS 的基础任务(创建 2~3 个任务),因为机器人通常跑 RTOS。这个可以在 UART 实践完成后快速过一遍。
5.3 完整的实践路径
当前 ──── 06-5 超声波测距(定时器输入捕获 + 脉宽测量)
│
▼
超声波 + 环形缓冲区(存最近 N 次数据)
+ LCD 显示距离 + 蜂鸣器报警(<20cm)
│
▼
[07] UART 模块实战(视频已看,动手做)
① ESP-01S: AT 指令通信(UART 查询)
② NEO-6M GPS: NMEA 数据解析(UART 中断)
③ GPS 不定长接收(DMA+IDLE)
④ ESP-01S + GPS 在 LCD 上显示数据
│
▼
[I2C/SPI] 模块实战
① EEPROM 读写(I2C)
② ADXL345 加速度计(I2C/SPI)
③ DS18B20 + DHT11 温湿度(OneWire)
│
▼
[RS485 专题] 多板通信 ← 你的核心优势
F407 ↔ F030 温湿度板 ↔ F103 工控底板
│
▼
[面向对象] 重构 UART 代码
│
▼
[FreeRTOS 基础] ← 建议实习前跑通
创建 2~3 个任务
六、引脚分配规划(模块 ↔ 开发板)
| 模块 | 接口 | 推荐引脚 | 说明 |
|---|---|---|---|
| HC-SR04 超声波 | Trig (GPIO输出) | PB0 / PB1 | 发 10μs 高电平触发 |
| Echo (定时器输入捕获) | PA6 / PA7 | 测脉宽(注意 5V→3.3V 分压) | |
| 光敏电阻(二合一) | GPIO 输入 | PC0 | 暗→高电平,亮→低电平 |
| EEPROM(二合一) | I2C | PB6(SCL) / PB7(SDA) | I2C 通信 |
| ESP-01S | UART | PA9(TX) / PA10(RX) | AT 指令通信,注意供电 |
| NEO-6M GPS | UART | PB10(TX) / PB11(RX) 或 PD5/PD6 | NMEA 协议解析 |
| TTL→RS485 | UART + GPIO | UART + PA8(RE/DE) | 485 方向控制 |
| DS18B20(三合一) | OneWire | PC2 / PC4 | 单总线,需精准延时 |
| DHT11(三合一) | OneWire | PB4 / PB5 | 单总线,含数据校验 |
| HS0038(三合一) | GPIO 中断 | PE4 / PE6- | NEC 红外解码 |
| ADXL345 | I2C 或 SPI | I2C: PB6/PB7 或 SPI | 加速度计 |
| 蜂鸣器 | GPIO 输出 | PA7(低电平触发) | 有源蜂鸣器 |
| LED | GPIO 输出 | PF9 / PF10(低电平点亮) | 板载 LED |
七、CubeMX 常用配置备忘
| 配置项 | 值 |
|---|---|
| 芯片型号 | STM32F407ZGTx |
| HCLK 主频 | 168 MHz |
| IDE | MDK-ARM (Keil) |
| 串口 1 | PA9(TX), PA10(RX), 115200 baud |
| LED 引脚 | PF9, PF10(低电平点亮) |
| 中断优先级分组 | NVIC_PRIORITYGROUP_4 |
八、重要提醒
- HC-SR04 Echo 引脚是 5V 电平,接 F407 必须串联 1K~2K 电阻分压,否则可能烧 GPIO
- ESP-01S 瞬间电流可达 300mA+,开发板 3.3V 可能带不动,建议外接 3.3V 稳压或使用 5V→AMS1117-3.3
- 所有代码写在 USER CODE 区域,否则 CubeMX 重新生成代码时会被擦除
- 学习原则:看视频 → 理解原理 → 关掉视频自己敲 → 用模块实践 → 排错 → 记笔记
九、恢复对话指引
如果会话丢失,下次只需:
- 读取本文件
- 读取 学习路线规划与模块实践指南.md
- 读取 HAL快速入门与项目实战-保姆级笔记.md
- 告诉我"从 06-5 超声波测距 + 环形缓冲区继续"
即可无缝恢复教学指导,无需重新说明背景。