1. 课程导学与环境搭建
各位同学,欢迎来到《STM32外设驱动移植与UART串口调试实战》的第一章。
说实话,我见过太多初学者卡在环境搭建这一步。不是Keil装不上,就是驱动死活认不到。折腾一整天,代码一行没写,信心先垮了一半。所以咱们第一节课,先把地基打牢。
1.1 这门课到底学什么?
先聊聊课程目标。你可能会问:“市面上STM32教程那么多,我为什么要跟你学?”
我的回答很简单——我不教你怎么点灯,我教你怎么“移植”。说白了,就是给你一套方法论:拿到一个新外设,怎么快速把它从A芯片搬到B芯片上,怎么用串口把调试信息吐出来,怎么定位问题。
课程核心目标:
- 掌握外设驱动分层移植的思想(硬件抽象层 + 芯片适配层)
- 熟练使用UART串口作为调试利器
- 能独立将第三方驱动或旧项目驱动移植到新平台
- 学会用逻辑分析仪和串口助手定位驱动Bug
我个人习惯把嵌入式开发比作搭积木。驱动就是那块最基础的积木,积木不对,上层应用全白搭。这门课30章,前5章打基础,中间20章逐个攻破常用外设,最后5章做综合实战。嗯,节奏我踩过,不会太赶。
1.2 学习路径建议
我不建议你跳着看。真的,我见过太多人直接跳到第15章“移植OLED驱动”,结果连I²C时序都看不懂,又回头翻前面的章节。浪费时间。
我的建议路径是这样的:
- 环境搭建(第1章) —— 今天咱们就干这个
- 基础理论(第2-3章) —— 时钟树、GPIO结构、外设总线
- 串口调试(第4-6章) —— 学会“说话”,才能知道芯片在想什么
- 外设逐个击破(第7-25章) —— 定时器、ADC、SPI、I²C、DMA……
- 综合移植实战(第26-30章) —— 把前面学的串起来
你想想看,如果连串口都调不通,后面移植Wi-Fi模块、传感器驱动,出了问题你连日志都看不到,那不是抓瞎吗?
1.3 开发板介绍
课程用的是STM32F103C8T6核心板,也就是大家常说的“蓝板”或“最小系统板”。为什么选它?
| 参数 | 值 | 我的评价 |
|---|---|---|
| 内核 | Cortex-M3 | 经典架构,资料最多 |
| 主频 | 72MHz | 够用,跑复杂逻辑也不虚 |
| Flash | 64KB | 装个FreeRTOS + 几个外设驱动没问题 |
| SRAM | 20KB | 注意别开太大的数组 |
| 价格 | 十几块 | 烧了不心疼,适合反复练手 |
当然,你用STM32F4系列或者G0系列也完全没问题。驱动移植的思想是通用的。我在项目中就经常把F1上的代码搬到G4上,改改时钟配置和寄存器地址就行。
小提示: 如果你用的是其他型号的板子,只要管脚兼容,课程中的代码基本可以直接用。不兼容的地方我会在章节中特别说明。
1.4 Keil MDK 安装与配置
Keil MDK,说白了就是咱们写STM32代码的IDE。我习惯用MDK 5.38版本,太老的版本对新的芯片包支持不好,太新的又容易有兼容性问题。
安装步骤其实不复杂,但有几个坑我得提前跟你说:
- 路径不要有中文 —— 我见过有人把Keil装到“D:\软件\Keil_v5”,结果编译报一些莫名其妙的错误。老老实实用英文路径。
- 安装时勾选所有器件支持包 —— 虽然会多占点硬盘,但省得后面用到某个型号时还要回头补装。
- 破解时以管理员身份运行 —— 这一步很多人忘,导致破解失败。
注意: Keil MDK是收费软件,但提供了不超过32KB代码的免费评估版。咱们课程中的例程基本都在32KB以内,所以不破解也能用。如果你要写大项目,请支持正版。
安装完成后,建议你做两件事:
- 打开 Pack Installer,搜索 STM32F1,安装对应的器件包(DFP)。
- 在 Project → Manage → Run-Time Environment 里熟悉一下CMSIS的选项。CMSIS就是ARM官方的软件接口标准,咱们后面移植驱动时会频繁用到。
1.5 STM32CubeMX 安装
STM32CubeMX是ST官方出的图形化配置工具。说实话,早期我写STM32都是手撸寄存器,后来用了CubeMX,真香。它帮你生成初始化代码,你只需要关注业务逻辑。
安装CubeMX要注意:
- 需要Java运行环境(JRE),如果电脑没有,安装向导会提示你下载。
- 安装完成后,打开 Help → Manage embedded software packages,下载STM32F1的固件包。这个包包含了HAL库和LL库的源码,咱们后面移植驱动时经常要参考。
我个人习惯是:用CubeMX生成工程框架,然后在Keil里手动添加驱动文件。这样既享受了图形化配置的便利,又保留了手动移植的灵活性。
1.6 串口驱动安装
串口驱动,就是让电脑能通过USB转串口工具和开发板通信。咱们用的开发板通常板载了CH340或CP2102芯片。
安装驱动时,我遇到过最典型的问题就是:驱动装上了,但设备管理器里显示黄色感叹号。
为什么会这样?多半是驱动版本不对。Windows 10/11系统有时会自动更新驱动,但更新的版本反而不兼容。我的建议是:
- 去芯片厂商官网下载驱动(CH340去南京沁恒官网,CP2102去Silicon Labs官网)。
- 安装时选择 始终信任此驱动程序发布者。
- 如果还是不行,在设备管理器里右键 → 更新驱动程序 → 浏览我的电脑 → 让我从计算机上的可用驱动程序列表中选取 → 选择兼容的老版本。
避坑指南: 我曾经在一个项目里折腾了整整一下午,最后发现是USB线的问题——那根线只能充电,不能传数据。所以如果你驱动装好了但串口打不开,先换根数据线试试。
1.7 本章知识体系
下面这张图,把咱们第一章的核心脉络串起来了。你可以把它当作学习地图,后面每学完一章,回来看看自己走到了哪个位置。
1.8 验证环境是否搭好
工具都装完了,怎么知道环境没问题?我教你一个快速验证的方法:
- 打开Keil,新建一个空工程,选择STM32F103C8。
- 写一个最简单的main函数,里面就一个while(1)。
- 编译,看有没有报错。
- 把开发板通过USB线连到电脑,设备管理器里确认串口号(比如COM3)。
- 打开串口助手(推荐SSCOM或Putty),选择对应的COM口,波特率115200,数据位8,停止位1,无校验。
- 短接开发板上的TX和RX引脚(PA9和PA10),在串口助手里发送数据,看能不能收到回显。
如果能收到回显,恭喜你,环境搭建成功了。如果收不到,别急,按这个顺序排查:
- 驱动装了吗?设备管理器里有没有COM口?
- 串口助手的参数对不对?波特率、数据位、停止位、校验位。
- TX和RX有没有接反?我刚开始学的时候就犯过这个错,把TX接到TX上,结果怎么都收不到数据。
重要提醒: 千万不要在开发板通电的情况下插拔串口线。我烧过一块板子的CH340芯片,就是因为带电插拔。虽然芯片便宜,但耽误时间啊。