第二章:开发环境搭建——Keil MDK的安装与配置、STM32CubeMX的安装、串口驱动安装与调试
各位同学,咱们今天来聊聊开发环境搭建。说实话,我见过太多新手一上来就急着写代码,结果环境没配好,折腾一整天连个灯都点不亮。嗯,咱们别走那条弯路。先把工具磨利了,后面干活才顺手。
2.1 Keil MDK的安装与配置
Keil MDK,说白了就是咱们写STM32代码的“主战场”。我个人习惯用MDK-ARM版本,目前比较稳定的是V5.38。别追新,稳定第一。
2.1.1 安装步骤
- 下载安装包:去Keil官网或者ARM官网下载MDK-ARM。注意选对版本,别下成C51了——那是给51单片机用的。
- 运行安装程序:一路Next就行。但我建议你改一下安装路径,别放C盘。我习惯放D:\Keil_v5,这样重装系统时不会丢。
- 激活License:安装完会弹出一个License Management窗口。你需要一个合法的License。嗯,这里不多说,你懂的。
- 安装器件包:打开Keil,点击Pack Installer,找到STM32F1系列(咱们POS机常用的是F103),下载对应的Device Family Pack。
⚠️ 注意: 我曾经遇到过安装完Keil后,编译报错说找不到芯片。后来发现是器件包没装。所以,装完Keil第一件事就是去Pack Installer里把STM32F1的包勾上。
2.1.2 配置要点
装好之后,咱们得调几个关键设置:
- 编译器版本:在Project -> Options for Target -> C/C++选项卡里,把编译器选成V6。V6编译更快,生成的代码也更小。我刚开始用V5,后来换了V6,编译时间从30秒降到了8秒。
- 调试器设置:咱们POS机开发一般用ST-Link或者J-Link。在Debug选项卡里选对调试器,然后点Settings,把SWD模式选上,速度设成4MHz。别设太高,容易掉线。
- Flash Download:在Utilities选项卡里,勾选Reset and Run。这样下载完程序后,芯片会自动复位运行,省得你手动按复位键。
💡 小技巧: 我个人习惯在Keil里把字体调成Consolas 12号,看着舒服。在Edit -> Configuration -> Colors & Fonts里改。
2.2 STM32CubeMX的安装
STM32CubeMX,说白了就是图形化配置工具。你点点鼠标,它就能帮你生成初始化代码。省得你对着寄存器手册一个个翻。我记得刚入行那会儿,配个时钟树要折腾半天,现在用CubeMX,一分钟搞定。
2.2.1 安装步骤
- 下载安装包:去ST官网下载STM32CubeMX。需要注册账号,免费下载。
- 安装Java环境:CubeMX依赖Java运行环境。如果你电脑没装Java,它会提示你安装。装JDK 11以上版本就行。
- 运行安装程序:双击安装,一路Next。安装路径我建议放D:\STM32CubeMX,别放C盘。
- 更新固件包:打开CubeMX,点击Help -> Manage embedded software packages,找到STM32F1系列,下载最新的固件包。这一步很关键,不然你选不了芯片型号。
⚠️ 注意: 我曾经遇到过CubeMX生成的代码编译报错,后来发现是固件包版本太老。所以,每次新建项目前,先检查一下固件包是不是最新的。
2.2.2 基本配置流程
咱们以STM32F103C8T6为例,走一遍流程:
- 新建项目:点击New Project,在Part Number里输入STM32F103C8,双击选中。
- 配置时钟:在Pinout & Configuration里,点RCC,把HSE选成Crystal/Ceramic Resonator。然后去Clock Configuration里,把HCLK设成72MHz。嗯,这里要注意,别超频。
- 配置串口:咱们POS机要用串口通信。在Connectivity里点USART1,Mode选Asynchronous。波特率设成115200,数据位8,停止位1,无校验。
- 生成代码:点Project -> Generate Code。Toolchain选MDK-ARM,版本选V5。然后点Generate。生成完后,用Keil打开项目。
💡 小技巧: 我个人习惯在CubeMX里把GPIO的初始电平设好。比如LED对应的引脚,默认设成高电平,这样上电后灯是灭的,不会晃眼。
2.3 串口驱动安装与调试
串口,说白了就是咱们和POS机“聊天”的通道。你写代码,它打印信息,你通过串口助手看结果。我刚开始做嵌入式时,觉得串口可有可无,后来发现没有串口调试,就像瞎子摸象。
2.3.1 驱动安装
咱们POS机开发板上一般用的是CH340或者CP2102芯片。驱动安装很简单:
- CH340驱动:去南京沁恒官网下载CH340驱动。安装后,插上开发板,设备管理器里会出现“USB-SERIAL CH340”的端口。
- CP2102驱动:去Silicon Labs官网下载CP210x驱动。安装后,设备管理器里会出现“Silicon Labs CP210x USB to UART Bridge”。
⚠️ 注意: 我曾经遇到过驱动装不上,后来发现是Windows强制签名的问题。解决办法:重启电脑,按F8进入高级启动选项,选择“禁用驱动程序强制签名”。装完驱动再重启回来。
2.3.2 调试工具
串口调试工具,我推荐两个:
| 工具名称 | 特点 | 推荐指数 |
|---|---|---|
| SSCOM | 轻量、稳定、支持多串口 | ⭐⭐⭐⭐⭐ |
| Putty | 支持SSH、Telnet,功能全面 | ⭐⭐⭐⭐ |
我个人习惯用SSCOM。打开后,选对COM口,波特率设成115200,数据位8,停止位1,无校验。然后点打开。如果开发板有数据发送,窗口里就会显示出来。
2.3.3 调试技巧
- 打印调试信息:在代码里用printf函数打印变量值。但要注意,STM32的printf需要重定向。在usart.c里添加如下代码:
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
- 检查接线:串口通信要交叉接线。开发板的TX接USB转串口模块的RX,开发板的RX接模块的TX。GND接GND。我刚开始就接反过,折腾了半天才发现。
- 波特率匹配:代码里设的波特率要和串口助手里的波特率一致。一个设115200,另一个设9600,肯定收不到数据。
💡 小技巧: 调试时,我习惯在串口助手底部勾选“显示时间戳”。这样能看出每条数据的时间间隔,方便分析时序问题。
好了,环境搭建这块就聊到这儿。你想想看,工具都装好了,后面咱们就可以开始写代码了。下一章,咱们聊聊GPIO和LED点灯——嵌入式开发的“Hello World”。