第2章 开发环境搭建:Keil MDK安装与配置、STM32CubeMX初始化工程、串口驱动与调试工具使用

做嵌入式开发,第一件事就是把家伙事儿备齐。我见过不少新手,上来就急着写代码,结果编译报错半天找不到原因——最后发现是工具链没配好。这一章,咱们就把开发环境从头捋一遍。

2.1 Keil MDK 安装与配置

Keil MDK,说白了就是ARM内核单片机最主流的IDE。我个人习惯用MDK 5.38版本,稳定,对STM32全系列支持都很好。

2.4.1 安装步骤

  1. 下载安装包:从ARM官网或Keil官网获取MDK-ARM安装包。注意区分32位和64位版本。
  2. 运行安装程序:右键以管理员身份运行。安装路径我建议不要有中文和空格,比如 C:\Keil_v5。
  3. 选择组件:默认勾选即可,但记得把 ARM Compiler 和 Device Support 都选上。
  4. 安装Pack包:安装完成后打开MDK,点击 Pack Installer,搜索你的芯片型号(比如STM32L071C8Tx),点击Install。
注意: 我曾经遇到过Pack版本冲突的问题——装了新版Pack后,旧工程编译报一堆未定义错误。后来我养成了一个习惯:每个工程都在本地保留一份Pack快照,或者用 .pack 文件离线安装,不依赖在线更新。

2.4.2 License激活

MDK需要License才能编译超过32KB的代码。如果你只是学习,可以用评估版;做项目的话,建议买正版License。激活方式:File → License Management,粘贴你的CID和License码。

2.2 STM32CubeMX 初始化工程

STM32CubeMX是ST官方出的图形化配置工具。你想想看,以前配时钟、配GPIO、配外设,全得手写寄存器,一个不小心就配错了。现在用CubeMX,点几下鼠标就能生成初始化代码,省心不少。

2.2.1 新建工程

  1. 打开CubeMX,点击 New Project。
  2. 在 Part Number Search 里输入你的芯片型号,比如 STM32L071C8,双击选中。
  3. 进入 Pinout & Configuration 视图,开始配置外设。

2.2.2 配置时钟树

时钟是单片机的“心跳”。我建议你养成一个习惯:先配时钟,再配外设。因为外设的时钟源、分频系数都依赖时钟树。

  • 选择 RCC → High Speed Clock (HSE) 选择 Crystal/Ceramic Resonator。
  • 进入 Clock Configuration 标签页,输入你想要的系统时钟频率(比如32MHz),CubeMX会自动计算分频系数。
小技巧: 如果你不确定时钟配置是否正确,可以看右下角的 HCLK 数值——它应该等于你设定的系统时钟频率。如果显示红色,说明配置有冲突,需要调整分频器。

2.2.3 配置串口(USART)

串口是我们调试的“眼睛”。没有串口,你根本不知道单片机在干什么。配置步骤:

  1. 在 Pinout 视图中找到 USART1(或USART2,看你板子上的引脚)。
  2. 将 Mode 设置为 Asynchronous(异步模式)。
  3. 在 Configuration 标签页中设置波特率:115200 Bits/s,数据位8,停止位1,无校验。
  4. 检查引脚是否冲突——如果TX/RX被其他外设占用了,CubeMX会提示红色警告。

2.2.4 生成代码

配置完成后,点击 Project → Generate Code。注意:

  • Toolchain / IDE 选择 MDK-ARM V5。
  • Firmware Package 选择你安装的版本,建议用最新的稳定版。
  • 勾选 Generate peripheral initialization as a pair of .c/.h files per peripheral——这样每个外设单独一个文件,好维护。

生成后,用Keil打开工程,直接编译,应该0错误0警告。嗯,这里要注意:如果报错说找不到某个头文件,八成是Pack没装全,回去检查一下。

2.3 串口驱动与调试工具使用

串口驱动,说白了就是让电脑能识别你的USB转串口模块。市面上常见的芯片有CH340、CP2102、FT232。我建议你买CP2102的模块,稳定,驱动好装。

2.3.1 安装串口驱动

  • CH340:去南京沁恒官网下载驱动,支持Win10/Win11。
  • CP2102:Silicon Labs官网下载,Windows通常自动更新也能识别。
  • FT232:FTDI官网下载,注意别装错版本(VCP驱动)。
避坑指南: 我曾经在Win10上装CH340驱动,插上设备后显示“设备描述符请求失败”。折腾了半天,最后发现是USB线的问题——换了一根带屏蔽的线就好了。所以,如果驱动装不上,先换线试试。

2.3.2 调试工具:Putty vs SecureCRT

这两个工具都能用来收串口数据。我个人习惯用Putty,轻量、免费、够用。SecureCRT功能更强,支持标签页、脚本录制,但收费。

功能 Putty SecureCRT
价格 免费 收费(约$99)
串口支持 基础 高级(支持X/Y/ZModem)
日志记录 手动开启 自动记录,可搜索
多会话 需开多个窗口 标签页管理
脚本支持 无 VBScript/Python

2.3.3 Putty配置步骤

  1. 打开Putty,选择 Serial 连接类型。
  2. 在 Serial line 里输入你的COM口号(比如COM3)。可以在设备管理器里查看。
  3. 设置 Speed(波特率)为115200。
  4. 点击 Open,如果连接成功,你会看到一个黑窗口。
  5. 如果单片机已经发送数据,窗口里会显示字符。如果没显示,检查接线:TX接RX,RX接TX,GND接GND。
调试技巧: 我习惯在代码里加一个开机打印——上电后先打印一串“Hello, World!”。这样能快速确认串口通不通。如果连这个都看不到,八成是硬件问题,别急着调软件。

2.4 本章知识体系

下面这张图,把本章的核心逻辑串起来了。你从安装工具开始,到配置工程,再到调试验证,每一步都环环相扣。

开发环境搭建知识体系 开发环境搭建核心流程 Keil MDK 安装 STM32CubeMX 配置 串口驱动安装 生成MDK工程 编译 & 下载 Putty / SecureCRT 提示:每个环节都建议先单独验证——Keil能编译、CubeMX能生成、串口能收发,再往下走。 不要一口气全做完再查问题,那样定位起来很痛苦。

2.5 常见问题与排查

  • Keil编译报错“Target not created”:检查Pack是否安装,或者工程路径是否有中文。
  • CubeMX生成代码后,Keil打开是空的:重新生成一次,注意选择正确的Toolchain版本。
  • 串口收不到数据:先短接TX和RX,用串口助手自发自收。如果能收到,说明模块没问题;收不到,检查驱动和接线。
  • Putty打开后闪退:可能是COM口被占用,换个COM口试试,或者重启电脑。

核心要点:

  • Keil MDK + CubeMX + 串口工具,是嵌入式开发的“三件套”。
  • CubeMX配置时钟时,务必先配HSE/LSE,再配系统时钟。
  • 串口调试时,波特率、数据位、停止位必须和单片机配置一致。
  • 遇到问题,先拆解——是硬件问题还是软件问题?分步验证,别瞎猜。