第3章:软件准备——工欲善其事,必先利其器

做嵌入式开发,尤其是调试串口AT指令这种需要跟硬件“对话”的活儿,软件工具就是你的武器。选对了、装好了,后面能省一大半的折腾时间。这一章咱们就把这几样核心工具捋一遍。

本章核心工具清单

  • IDE(集成开发环境):Keil MDK 或 STM32CubeIDE,二选一
  • 串口调试助手:SSCOM 或 Putty,用来跟模块“聊天”
  • 配置工具:STM32CubeMX,快速生成初始化代码

3.1 开发环境的选择:Keil MDK vs STM32CubeIDE

我个人习惯用 Keil MDK,因为从十多年前就开始用了,调试界面熟悉得闭着眼都能操作。但如果你是新入行的朋友,我建议你直接上 STM32CubeIDE——免费、功能全、还集成了 CubeMX。

为什么会纠结选哪个?说白了,看项目需求和预算。

对比项 Keil MDK STM32CubeIDE
价格 商用需付费(有代码大小限制的免费版) 完全免费
编译器 ARMCC(编译效率高) GCC(开源,生态好)
调试体验 老牌稳定,ULINK/J-Link 支持好 集成 OpenOCD,对 ST-Link 原生支持
CubeMX 集成 需手动导入 .ioc 文件 原生集成,一键同步
适合场景 商业项目、老项目维护 学习、原型验证、中小项目

我的建议:如果你只是学 AT 指令解析,用 STM32CubeIDE 完全够用。我当年带徒弟时,让他们从 CubeIDE 入手,上手快,遇到问题社区资料也多。

3.2 安装要点与避坑

Keil MDK 安装

  1. 去 Keil 官网下载 MDK-ARM 最新版(目前是 V5.38)
  2. 安装时注意路径不要有中文,否则编译会报一些莫名其妙的错
  3. 安装完成后,需要添加对应芯片的器件包(Device Family Pack)
  4. 破解?嗯,个人学习用可以理解,但商用请务必购买正版

我曾经踩过的坑:有一次装完 Keil 死活编译不过,报错说找不到 core_cm4.h。折腾了半天,发现是器件包版本没装对。STM32F4 系列要装 Keil.STM32F4xx_DFP.2.16.0 以上的版本。

STM32CubeIDE 安装

  1. 从 ST 官网下载安装包,建议选离线版(大概 1GB 左右)
  2. 安装过程全自动,它会帮你把 GCC 工具链、OpenOCD 调试器都配好
  3. 第一次启动会提示创建工作空间(Workspace),路径同样不要有中文

3.3 串口助手:你的“第二双眼睛”

调试 AT 指令,说白了就是“发一条指令,看一条回复”。串口助手就是干这个的。我个人最常用的是 SSCOM,轻量、稳定、不乱码。

工具 优点 缺点
SSCOM 体积小(几百KB)、支持多串口、自动发送 界面简陋、不支持 SSH
Putty 支持串口和网络协议、跨平台 配置稍复杂、没有发送历史
SecureCRT 功能强大、脚本支持好 收费、有点重

调试小技巧:用 SSCOM 时,记得勾选“发送新行”,也就是在每条指令末尾自动加 \r\n。AT 指令协议要求以回车换行结尾,少了这个,模块根本不理你。

3.4 STM32CubeMX:图形化配置利器

STM32CubeMX 这工具,说白了就是帮你省掉写初始化代码的苦力活。你点点鼠标,它就把 GPIO、时钟、串口、DMA 的初始化代码全生成了。

我刚开始用的时候还不太信任它,总觉得手写才靠谱。后来项目赶工期,硬着头皮用了一次,嗯,真香。

用 CubeMX 配置串口的基本步骤

  1. 选择芯片型号(比如 STM32F103C8T6)
  2. 在 Pinout 视图中,将 USART1 的 TX/RX 引脚分配到 PA9/PA10
  3. 配置 Mode 为 Asynchronous(异步模式)
  4. 设置波特率 115200、数据位 8、停止位 1、无校验
  5. 在 Clock Configuration 里确保 USART1 的时钟源正确
  6. 点击 Project -> Generate Code,选择 IDE 类型(MDK 或 CubeIDE)

注意:生成代码后,记得检查 HAL_UART_Init() 里的波特率是否跟你的串口助手一致。我遇到过好几次,CubeMX 里配的 115200,生成出来变成 9600,原因是时钟树没配好,导致分频系数算错了。

3.5 工具链的完整工作流程

下面这张图,是我画的一个工具链协作关系。你看一眼,就能明白这些工具是怎么串起来的。

STM32 串口调试工具链流程图 工具链协作流程图 STM32CubeMX 配置引脚/时钟/外设 Keil / CubeIDE 编译/下载/调试 SSCOM / Putty 发送AT/查看回复 生成代码 串口数据 STM32 目标板 运行 AT 指令解析固件 下载固件 串口收发 💡 调试闭环: CubeMX 配置 → IDE 编译下载 → 目标板运行 → 串口助手收发数据 → 根据回复修改代码 → 重新编译下载

3.6 快速验证:你的环境装好了吗?

工具都装完后,我建议你做一个快速验证,确保整个链路是通的。

  1. 打开 CubeMX,新建一个工程,选好芯片型号
  2. 配好一个串口(USART1,115200-8-N-1)
  3. 生成代码,导入到 Keil 或 CubeIDE
  4. 在 main.c 的 while(1) 里加一行:HAL_UART_Transmit(&huart1, (uint8_t*)"Hello\r\n", 7, 100);
  5. 编译下载到板子,打开 SSCOM,选对串口号和波特率
  6. 按下复位键,看串口助手是否收到 "Hello"

如果收不到数据,按这个顺序排查:

  • 串口号选对了没?(去设备管理器里看)
  • 波特率一致吗?(板子和助手要设成一样)
  • TX/RX 接反了没?(交叉连接)
  • 共地了没?(GND 一定要连)

嗯,这一步验证通过了,后面的 AT 指令解析才能顺利进行。别嫌麻烦,我见过太多人上来就写 AT 解析代码,结果折腾半天发现是串口根本没通。