1. 课程导学与环境搭建

各位同学,欢迎来到《STM32外设驱动移植与UART串口调试实战》的第一章。

说实话,我见过太多初学者卡在环境搭建这一步。不是Keil装不上,就是驱动死活认不到。折腾一整天,代码一行没写,信心先垮了一半。所以咱们第一节课,先把地基打牢。

1.1 这门课到底学什么?

先聊聊课程目标。你可能会问:“市面上STM32教程那么多,我为什么要跟你学?”

我的回答很简单——我不教你怎么点灯,我教你怎么“移植”。说白了,就是给你一套方法论:拿到一个新外设,怎么快速把它从A芯片搬到B芯片上,怎么用串口把调试信息吐出来,怎么定位问题。

课程核心目标:

  • 掌握外设驱动分层移植的思想(硬件抽象层 + 芯片适配层)
  • 熟练使用UART串口作为调试利器
  • 能独立将第三方驱动或旧项目驱动移植到新平台
  • 学会用逻辑分析仪和串口助手定位驱动Bug

我个人习惯把嵌入式开发比作搭积木。驱动就是那块最基础的积木,积木不对,上层应用全白搭。这门课30章,前5章打基础,中间20章逐个攻破常用外设,最后5章做综合实战。嗯,节奏我踩过,不会太赶。

1.2 学习路径建议

我不建议你跳着看。真的,我见过太多人直接跳到第15章“移植OLED驱动”,结果连I²C时序都看不懂,又回头翻前面的章节。浪费时间。

我的建议路径是这样的:

  1. 环境搭建(第1章) —— 今天咱们就干这个
  2. 基础理论(第2-3章) —— 时钟树、GPIO结构、外设总线
  3. 串口调试(第4-6章) —— 学会“说话”,才能知道芯片在想什么
  4. 外设逐个击破(第7-25章) —— 定时器、ADC、SPI、I²C、DMA……
  5. 综合移植实战(第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版本,太老的版本对新的芯片包支持不好,太新的又容易有兼容性问题。

安装步骤其实不复杂,但有几个坑我得提前跟你说:

  1. 路径不要有中文 —— 我见过有人把Keil装到“D:\软件\Keil_v5”,结果编译报一些莫名其妙的错误。老老实实用英文路径。
  2. 安装时勾选所有器件支持包 —— 虽然会多占点硬盘,但省得后面用到某个型号时还要回头补装。
  3. 破解时以管理员身份运行 —— 这一步很多人忘,导致破解失败。

注意: 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系统有时会自动更新驱动,但更新的版本反而不兼容。我的建议是:

  1. 去芯片厂商官网下载驱动(CH340去南京沁恒官网,CP2102去Silicon Labs官网)。
  2. 安装时选择 始终信任此驱动程序发布者。
  3. 如果还是不行,在设备管理器里右键 → 更新驱动程序 → 浏览我的电脑 → 让我从计算机上的可用驱动程序列表中选取 → 选择兼容的老版本。

避坑指南: 我曾经在一个项目里折腾了整整一下午,最后发现是USB线的问题——那根线只能充电,不能传数据。所以如果你驱动装好了但串口打不开,先换根数据线试试。

1.7 本章知识体系

下面这张图,把咱们第一章的核心脉络串起来了。你可以把它当作学习地图,后面每学完一章,回来看看自己走到了哪个位置。

第一章 知识体系结构图 环境搭建 课程目标与学习路径 开发板介绍 Keil MDK安装配置 CubeMX + 串口驱动 驱动移植思想 UART调试技能 STM32F103C8T6 硬件资源概览 安装与破解 Pack安装 CubeMX配置 CH340/CP2102驱动 学习建议 1. 按顺序搭建,不要跳步 2. 每装一个工具,都验证一下能否正常工作 3. 遇到问题先看设备管理器,再看驱动版本

1.8 验证环境是否搭好

工具都装完了,怎么知道环境没问题?我教你一个快速验证的方法:

  1. 打开Keil,新建一个空工程,选择STM32F103C8。
  2. 写一个最简单的main函数,里面就一个while(1)。
  3. 编译,看有没有报错。
  4. 把开发板通过USB线连到电脑,设备管理器里确认串口号(比如COM3)。
  5. 打开串口助手(推荐SSCOM或Putty),选择对应的COM口,波特率115200,数据位8,停止位1,无校验。
  6. 短接开发板上的TX和RX引脚(PA9和PA10),在串口助手里发送数据,看能不能收到回显。

如果能收到回显,恭喜你,环境搭建成功了。如果收不到,别急,按这个顺序排查:

  • 驱动装了吗?设备管理器里有没有COM口?
  • 串口助手的参数对不对?波特率、数据位、停止位、校验位。
  • TX和RX有没有接反?我刚开始学的时候就犯过这个错,把TX接到TX上,结果怎么都收不到数据。

重要提醒: 千万不要在开发板通电的情况下插拔串口线。我烧过一块板子的CH340芯片,就是因为带电插拔。虽然芯片便宜,但耽误时间啊。