第二章:开发环境搭建——Keil MDK的安装与配置、STM32CubeMX的安装、串口驱动安装与调试

各位同学,咱们今天来聊聊开发环境搭建。说实话,我见过太多新手一上来就急着写代码,结果环境没配好,折腾一整天连个灯都点不亮。嗯,咱们别走那条弯路。先把工具磨利了,后面干活才顺手。

2.1 Keil MDK的安装与配置

Keil MDK,说白了就是咱们写STM32代码的“主战场”。我个人习惯用MDK-ARM版本,目前比较稳定的是V5.38。别追新,稳定第一。

2.1.1 安装步骤

  1. 下载安装包:去Keil官网或者ARM官网下载MDK-ARM。注意选对版本,别下成C51了——那是给51单片机用的。
  2. 运行安装程序:一路Next就行。但我建议你改一下安装路径,别放C盘。我习惯放D:\Keil_v5,这样重装系统时不会丢。
  3. 激活License:安装完会弹出一个License Management窗口。你需要一个合法的License。嗯,这里不多说,你懂的。
  4. 安装器件包:打开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 安装步骤

  1. 下载安装包:去ST官网下载STM32CubeMX。需要注册账号,免费下载。
  2. 安装Java环境:CubeMX依赖Java运行环境。如果你电脑没装Java,它会提示你安装。装JDK 11以上版本就行。
  3. 运行安装程序:双击安装,一路Next。安装路径我建议放D:\STM32CubeMX,别放C盘。
  4. 更新固件包:打开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”。