第2章 开发环境搭建:Keil MDK安装与配置、STM32CubeMX初始化工程、串口驱动与调试工具使用
做嵌入式开发,第一件事就是把家伙事儿备齐。我见过不少新手,上来就急着写代码,结果编译报错半天找不到原因——最后发现是工具链没配好。这一章,咱们就把开发环境从头捋一遍。
2.1 Keil MDK 安装与配置
Keil MDK,说白了就是ARM内核单片机最主流的IDE。我个人习惯用MDK 5.38版本,稳定,对STM32全系列支持都很好。
2.4.1 安装步骤
- 下载安装包:从ARM官网或Keil官网获取MDK-ARM安装包。注意区分32位和64位版本。
- 运行安装程序:右键以管理员身份运行。安装路径我建议不要有中文和空格,比如
C:\Keil_v5。 - 选择组件:默认勾选即可,但记得把
ARM Compiler和Device Support都选上。 - 安装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 新建工程
- 打开CubeMX,点击
New Project。 - 在
Part Number Search里输入你的芯片型号,比如STM32L071C8,双击选中。 - 进入
Pinout & Configuration视图,开始配置外设。
2.2.2 配置时钟树
时钟是单片机的“心跳”。我建议你养成一个习惯:先配时钟,再配外设。因为外设的时钟源、分频系数都依赖时钟树。
- 选择
RCC→High Speed Clock (HSE)选择Crystal/Ceramic Resonator。 - 进入
Clock Configuration标签页,输入你想要的系统时钟频率(比如32MHz),CubeMX会自动计算分频系数。
小技巧: 如果你不确定时钟配置是否正确,可以看右下角的
HCLK 数值——它应该等于你设定的系统时钟频率。如果显示红色,说明配置有冲突,需要调整分频器。
2.2.3 配置串口(USART)
串口是我们调试的“眼睛”。没有串口,你根本不知道单片机在干什么。配置步骤:
- 在
Pinout视图中找到USART1(或USART2,看你板子上的引脚)。 - 将
Mode设置为Asynchronous(异步模式)。 - 在
Configuration标签页中设置波特率:115200 Bits/s,数据位8,停止位1,无校验。 - 检查引脚是否冲突——如果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配置步骤
- 打开Putty,选择
Serial连接类型。 - 在
Serial line里输入你的COM口号(比如COM3)。可以在设备管理器里查看。 - 设置
Speed(波特率)为115200。 - 点击
Open,如果连接成功,你会看到一个黑窗口。 - 如果单片机已经发送数据,窗口里会显示字符。如果没显示,检查接线:TX接RX,RX接TX,GND接GND。
调试技巧: 我习惯在代码里加一个开机打印——上电后先打印一串“Hello, World!”。这样能快速确认串口通不通。如果连这个都看不到,八成是硬件问题,别急着调软件。
2.4 本章知识体系
下面这张图,把本章的核心逻辑串起来了。你从安装工具开始,到配置工程,再到调试验证,每一步都环环相扣。
2.5 常见问题与排查
- Keil编译报错“Target not created”:检查Pack是否安装,或者工程路径是否有中文。
- CubeMX生成代码后,Keil打开是空的:重新生成一次,注意选择正确的Toolchain版本。
- 串口收不到数据:先短接TX和RX,用串口助手自发自收。如果能收到,说明模块没问题;收不到,检查驱动和接线。
- Putty打开后闪退:可能是COM口被占用,换个COM口试试,或者重启电脑。
核心要点:
- Keil MDK + CubeMX + 串口工具,是嵌入式开发的“三件套”。
- CubeMX配置时钟时,务必先配HSE/LSE,再配系统时钟。
- 串口调试时,波特率、数据位、停止位必须和单片机配置一致。
- 遇到问题,先拆解——是硬件问题还是软件问题?分步验证,别瞎猜。