STM32F103C8T6 学习路线总结
学习路线
🔌 第一步 — GPIO 输入输出模式
理解推挽 / 开漏 / 上拉 / 下拉,看懂 MOS 管电路
⏰ 第二步 — 时钟树与系统时序
HSE → PLL → 72MHz 到底怎么来的
📡 第三步 — 通信协议 UART · I2C · SPI
芯片之间怎么说话,三种协议的选型诀窍
⚡ 第四步 — 中断系统 NVIC · EXTI
CPU 怎么高效响应外部事件,抢占优先级怎么排
⏱️ 第五步 — 定时器
PWM 输出 / 输入捕获 / 编码器模式
🔌 第六步 — ADC 模数转换
模拟信号采集 · 单通道多通道 DMA · 定时器触发
💡 实战一 — PWM 呼吸灯
第五步的定时器知识 + 正弦波算法
🚗 实战二 — TB6612 电机驱动
定时器 PWM + GPIO 控制 · H 桥驱动原理
🛰️ 实战三 — MPU6050 姿态传感器
I2C 通信 + 定时中断 + 互补滤波 + 卡尔曼滤波
知识体系
文章索引
📖 基础篇 — 从裸机到外设
1
GPIO 输入输出模式
推挽 · 开漏 · 上拉 · 下拉 · MOS 管电路
2
时钟树与系统时序
HSE · PLL · SYSCLK · AHB · APB · FLASH_LATENCY
3
通信协议 UART · I2C · SPI
帧格式 · 异步同步 · HAL 收发 · 选型决策树
4
中断系统 NVIC · EXTI
抢占/子优先级 · ISR 规范 · volatile · 竞态保护
5
定时器详解
PWM 输出 · 输入捕获 · 编码器 · 主从联动
6
ADC 模数转换详解
单通道 · 多通道 · DMA · 定时器触发 · 过采样
🛠️ 实战篇 — 把知识用起来
7
PWM 呼吸灯
TIM2 PWM · 正弦算法 · 多路流水呼吸
8
TB6612 电机驱动
H 桥原理 · 双路 PWM · 速控与刹车
9
MPU6050 姿态传感器
I2C · 互补滤波 · 卡尔曼 · 定时中断
学习建议
🗺️ 推荐阅读顺序
🔗 项目的知识依赖
| 项目 | 用到的前置知识 |
|---|---|
| 呼吸灯 | ②时钟 — APB1 定时器时钟 / ①GPIO — 复用推挽 / ⑤定时器 — PWM / ④中断 — 定时中断(进阶版) |
| TB6612 电机 | ②时钟 — APB1 定时器时钟 / ①GPIO — 推挽输出控制 IN1/IN2 / ⑤定时器 — 双路 PWM / ④中断 — 编码器反馈(进阶) |
| MPU6050 | ②时钟 — I2C 时钟使能 / ①GPIO — 开漏复用 / ③I2C — 读写寄存器 / ⑤定时器 — 125Hz 采样 / ④中断 — 优先级分配 |
🎯 动手节点
每读完一篇,做一个最小实验,不要只看不练。
| 读完 | 动手做什么 | 验证方式 |
|---|---|---|
| GPIO | 点亮 LED | 灯亮 |
| 时钟树 | MCO(PA8) 输出 SYSCLK | 示波器看 72MHz |
| 通信 | I2C 扫描 MPU6050 地址 | 串口打印 0x68 |
| 中断 | 按键中断翻转 LED | 按下翻转 |
| 定时器 | 呼吸灯 | 渐亮渐灭 |
| ADC | 电位器电压采集 | 串口打印电压值 |
| TB6612 | 驱动直流电机正反转 | 电机转动 |
| MPU6050 | 姿态解算 | 串口输出 Roll/Pitch |
🧰 硬件工具
| 工具 | 参考价格 | 用途 |
|---|---|---|
| STM32F103C8T6 | ~8 元 | 主控 |
| ST-Link V2 | ~15 元 | 下载调试 |
| 逻辑分析仪 | ~30 元 | I2C/SPI/UART 波形分析 |
| USB-TTL | ~5 元 | 串口通信 |
| 面包板 + 杜邦线 | ~10 元 | 免焊接接线 |
| TB6612 驱动板 | ~8 元 | 电机驱动 |
| 直流减速电机 | ~10 元 | 小车/云台动力 |
💪 学习心态
第一次配时钟 → HardFault
第一次调 I2C → 设备无应答
第一次写中断 → 程序卡死
第一次算 PWM → 占空比不对
第一次驱动电机 → 转速失控
这些都是必经之路。 每次遇到问题,逻辑分析仪看波形、示波器测频率、串口打印变量值——三板斧下去,问题解决一半。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 世海浮沉,于屿得见本真归处!








