3、开发环境搭建:Keil MDK安装、STM32CubeMX配置、串口驱动安装与调试

好,咱们正式开始动手了。这一章我带你把开发环境搭起来。说实话,很多初学者一上来就急着写代码,结果编译报错、下载失败、串口没反应……折腾半天心态崩了。我当年也踩过这些坑,所以这一章咱们稳扎稳打,把地基打牢。

3.1 Keil MDK安装——别选错版本

Keil MDK,说白了就是ARM芯片的IDE。咱们用的STM32L0系列,必须装MDK-ARM版本,别下成C51了——那个是给8051用的,我见过有人搞混过。

安装步骤:

  1. 去Keil官网下载MDK-ARM最新版(目前是5.38)。
  2. 双击安装,一路Next。注意安装路径不要有中文。
  3. 安装完成后,打开Keil,点 File → License Management
  4. 用注册机生成License,粘贴进去。嗯,这一步网上教程很多,我就不细说了。
注意: Keil 5 和 Keil 4 的工程文件不兼容。我建议统一用 Keil 5,因为 STM32CubeMX 生成的工程默认就是 Keil 5 格式。

装完之后,建议装一个 ARM Compiler 6。Keil默认带的是V5编译器,但V6编译速度更快,生成的代码也更小。我个人习惯用V6,尤其是LoRa这种对功耗敏感的项目,能省一点是一点。

3.2 STM32CubeMX配置——图形化点一点

STM32CubeMX是ST官方出的图形化配置工具。你想想看,以前配时钟、配GPIO、配串口,全得看数据手册翻寄存器,现在鼠标点几下就生成了初始化代码,省了多少事。

安装步骤:

  1. 去ST官网下载STM32CubeMX,安装时需要Java环境。如果没有JRE,它会提示你下载。
  2. 安装完成后,打开CubeMX,点击 Help → Manage embedded software packages
  3. 找到 STM32L0 系列,下载对应的固件包。我建议下载最新版,但别太新——有时候最新版有bug。我一般用1.12.1,稳得很。

配置项目:

  1. 新建工程,选择芯片 STM32L071CBTx(咱们课程用的就是这个)。
  2. 配置时钟:HSE 选外部晶振,LSE 选32.768kHz(RTC用)。
  3. 配置串口:USART1,波特率115200,8N1。引脚默认是PA9(TX)和PA10(RX)。
  4. 配置GPIO:把LoRa模块的CS、RST、DIO0等引脚设为推挽输出或输入。
  5. 点击 Project → Generate Code,生成Keil工程。
小技巧: 生成代码时,记得勾选 Initialize all peripherals。不然有些外设的初始化代码会被省略,你后面调试时会莫名其妙。

3.3 串口驱动安装——别让设备管理器里出现黄色感叹号

串口驱动,说白了就是让电脑认识你的USB转串口模块。咱们用的是CH340G,便宜又好用。但Windows 10/11有时候会自动装驱动,有时候装不上——我遇到过好几次。

安装步骤:

  1. 去官网下载CH340驱动,或者用我提供的驱动包。
  2. 插上USB转串口模块,打开设备管理器。
  3. 如果看到 黄色感叹号,右键点击,选择 更新驱动程序,手动指定驱动路径。
  4. 安装成功后,设备管理器里会出现 COM端口,比如COM3、COM4。
注意: 有些山寨CH340模块,驱动装不上。我建议买正品模块,也就十几块钱,省心很多。我曾经被一个山寨模块坑了整整一个下午,最后发现是硬件问题。

3.4 串口调试——验证你的环境是否正常

环境搭好了,怎么知道能不能用?写个最简单的程序,让STM32通过串口发个"Hello World"出来。

代码示例:

#include "main.h"
#include "usart.h"

int main(void)
{
    HAL_Init();
    SystemClock_Config();
    MX_USART1_UART_Init();

    uint8_t msg[] = "LoRa Temp Tracker Ready!\r\n";

    while (1)
    {
        HAL_UART_Transmit(&huart1, msg, sizeof(msg)-1, 1000);
        HAL_Delay(1000);
    }
}

编译下载后,打开串口助手(比如SSCOM、Putty),设置波特率115200,数据位8,停止位1,无校验。如果看到 "LoRa Temp Tracker Ready!" 每秒打印一次,说明你的环境搭建成功了。

调试心得: 如果串口没反应,先检查三件事:
1. 波特率是否匹配?
2. TX/RX是否接反?
3. 共地了吗?
我遇到过最奇葩的一次,是USB转串口模块的TX引脚虚焊了……所以硬件连接也要仔细检查。

3.5 避坑指南——我踩过的那些坑

  • Keil编译报错"Error: L6218E":多半是启动文件没加。检查工程里有没有 startup_stm32l071xx.s
  • CubeMX生成的代码编译不过:可能是固件包版本和Keil编译器不兼容。我建议CubeMX用1.12.1,Keil用V5或V6编译器。
  • 串口乱码:检查时钟配置。如果HSE频率不对,串口波特率会偏。用示波器量一下TX引脚的波形,最直接。
  • 下载失败:检查SWD接口的接线。我习惯用ST-Link,四根线:SWCLK、SWDIO、GND、3.3V。别接反了。

好了,环境搭建就到这里。下一章咱们开始写LoRa驱动,让模块真正收发数据。到时候你会发现,前面这些准备工作,都是值得的。