3. 开发环境搭建:Keil/IAR IDE安装、STM32CubeMX配置、串口调试工具准备

做嵌入式开发,第一步就是把家伙事儿备齐。UWB定位系统说到底还是跑在MCU上的,所以IDE、配置工具、调试工具这三样,一个都不能少。

我个人习惯把环境搭建分成三个模块:写代码的(IDE)、生成初始化代码的(CubeMX)、看数据的(串口工具)。咱们一个一个来。

本章核心目标:装好Keil MDK或IAR EWARM,配好STM32CubeMX工程,搞定串口调试链路。整个过程大概需要1-2小时,取决于你的网速。

3.1 IDE选型:Keil还是IAR?

说实话,这两家我都用过。Keil的社区资源多,网上例程一抓一把;IAR的编译优化确实狠,代码密度能小10%-15%。

我的建议是:新手选Keil,遇到问题好搜。如果你做产品量产,可以考虑IAR,省下来的Flash空间就是钱。

对比项 Keil MDK IAR EWARM
最新版本 MDK v5.38a IAR 9.40
编译器 Arm Compiler 6 (LLVM) IAR C/C++ Compiler
代码密度 中等 优秀(-Oz模式)
调试器支持 J-Link, ST-Link, ULINK J-Link, I-jet, ST-Link
免费限制 32KB代码限制 无限制但无调试
学习资源 丰富 较少

小技巧:Keil的Pack Installer经常连不上服务器。我一般直接去ARM官网下载离线Pack包,手动安装,省得干等。

3.2 Keil MDK安装实战

安装过程其实不复杂,但有几个坑我得提前跟你说。

  1. 下载安装包:去ARM官网或Keil官网,找MDK-Arm。别下错了,MDK-Plus是给C51用的。
  2. 运行安装程序:一路Next,但路径不要有中文和空格。我习惯装到 C:\Keil_v5。
  3. 安装设备Pack:打开Keil,点Pack Installer,找到STM32F4系列(咱们用的是F407或F429)。
  4. 破解(教育版):如果你用教育版,需要注册。个人学习用的话,网上有注册机,但请尊重版权。

注意:Win10/Win11用户安装完Keil后,记得以管理员身份运行一次。否则调试器可能识别不到。我曾经因为这个折腾了半小时,最后发现是权限问题。

3.3 IAR EWARM安装要点

如果你决定用IAR,流程也差不多。但IAR的许可证管理比较麻烦,我简单说一下。

  • 下载:IAR官网注册后下载,或者找代理商要试用License。
  • 安装:同样,路径不要中文。IAR支持同时安装多个版本,我电脑上就留着8.50和9.40。
  • 激活:IAR用License Manager激活。试用版30天,功能全开。
  • 配置工具链:IAR自带CMSIS和STM32的HAL库,但版本可能旧。我建议自己下载最新版。

嗯,这里要注意:IAR的工程文件后缀是 .eww(工作空间)和 .ewp(工程),跟Keil的 .uvprojx 不一样。别搞混了。

3.4 STM32CubeMX配置

CubeMX是ST官方的图形化配置工具。说白了,就是帮你生成初始化代码,省得你手写寄存器。

咱们UWB定位系统用到的外设不多,但时钟和串口必须配对。

3.4.1 新建工程

  1. 打开CubeMX,点 New Project。
  2. 搜索 STM32F407VGT6 或 STM32F429ZIT6,双击选中。
  3. 系统会问你要不要初始化所有外设,选 No,咱们自己配。

3.4.2 时钟配置

UWB模块(比如DWM1000)需要SPI时钟,MCU主频最好跑到168MHz以上,不然处理定位算法会卡。

  • 进入 Clock Configuration 页面。
  • 选择 HSE(外部晶振),咱们板子上一般是8MHz。
  • 配置PLL,让 HCLK = 168MHz,APB1 = 42MHz,APB2 = 84MHz。
  • SPI时钟来自APB2,84MHz够用。

关键参数:HSE=8MHz → PLL_M=8, PLL_N=336, PLL_P=2 → SYSCLK=168MHz。这个公式我背得滚瓜烂熟。

3.4.3 串口配置

咱们至少需要两个串口:一个给调试信息(USART1),一个给UWB模块(USART2或SPI)。

  • USART1:PA9(TX), PA10(RX),波特率115200,8N1。
  • USART2:PD5(TX), PD6(RX),波特率115200,用于跟UWB模块通信。

配置完记得点 Generate Code,选MDK-ARM或IAR,生成工程。

个人经验:CubeMX生成的代码默认用HAL库,但HAL库的延时函数 HAL_Delay() 精度只有1ms。UWB定位需要微秒级延时,我一般会自己写一个基于SysTick的 delay_us()。

3.5 串口调试工具准备

代码写好了,总得看看输出吧?串口调试工具就是干这个的。

3.5.1 硬件准备

你需要一根 USB转TTL 线,比如CH340或CP2102。注意:STM32的串口电平是3.3V,别直接怼5V,会烧芯片。

  • 连接方式:
  • USB转TTL的TX → STM32的RX (PA10)
  • USB转TTL的RX → STM32的TX (PA9)
  • GND → GND

3.5.2 软件工具

我常用的有三款,各有优劣。

工具 优点 缺点
SSCOM 轻量、稳定、支持多串口 界面老旧
Putty 支持SSH和串口,跨平台 配置稍复杂
MobaXterm 功能强大,支持X11转发 个人版有限制

我个人习惯用 SSCOM,打开即用,不折腾。设置好波特率115200、数据位8、停止位1、无校验,点打开就能看到数据。

避坑指南:我曾经遇到过串口收不到数据,查了半天发现是USB转TTL的驱动没装。CH340在Win10下需要手动安装驱动,别指望系统自动识别。

3.6 验证环境:跑一个Hello World

环境搭好了,咱们写个最简单的程序验证一下。

/* main.c */
#include "main.h"
#include "usart.h"

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

    uint8_t msg[] = "UWB System Ready!\r\n";

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

编译下载后,打开SSCOM,你应该能看到每秒打印一次 UWB System Ready!。如果能看到,恭喜你,环境搭建成功。

3.7 本章知识体系

下面这张图把咱们这章的内容串起来了。你可以把它当成一个检查清单。

开发环境搭建知识体系 开发环境搭建知识体系 IDE安装 STM32CubeMX配置 串口调试工具 Keil MDK IAR EWARM 时钟配置 外设配置 硬件连接 软件工具 验证方法:编译下载 → 串口输出 "UWB System Ready!" 调试器驱动 Pack安装 环境搭建完成 → 可以开始写代码了

这张图把IDE、CubeMX、串口工具三个模块的关系画清楚了。你照着这个流程走,基本不会漏掉什么。

最后说一句:环境搭建是最容易出问题的一步,但也是最值得花时间的一步。我见过太多人因为串口驱动没装好、CubeMX时钟配错,浪费一整天。所以,别急,一步一步来。