3. 开发环境搭建:Keil / IAR / STM32CubeIDE 配置与串口调试工具安装

在进行 UART 中断模式实时性与吞吐量测试之前,必须搭建一套稳定、可复现的开发环境。本章将指导你完成三种主流 IDE(Keil MDK、IAR EWARM、STM32CubeIDE)的工程配置,以及串口调试工具(PuTTY、Tera Term)的安装与基本设置。正确的环境配置是后续测试数据可信的基础。

3.1 开发环境全景概览

下图展示了嵌入式 UART 驱动开发与测试的完整工具链关系,包括代码编辑、编译、调试、下载以及串口通信验证环节。

嵌入式 UART 开发与测试工具链 IDE 开发环境 Keil MDK IAR EWARM STM32CubeIDE (代码编辑/编译/调试) 目标硬件 STM32 开发板 UART 串口 (中断模式驱动) 串口调试工具 PuTTY Tera Term (数据收发/日志监控) 提示:IDE 负责固件生成,串口工具负责数据观测,两者协同完成实时性与吞吐量测试。

3.2 IDE 工程配置要点

三种 IDE 在 UART 中断模式配置上存在操作差异,但核心参数一致。下表对比了关键配置项及其在三个环境中的对应位置。

配置项 Keil MDK IAR EWARM STM32CubeIDE
芯片选择 Device 选项卡 → 选择 STM32 系列 Project → Options → General Options → Target 新建工程时选择 Board 或 MCU
时钟配置 System Viewer 或 system_stm32xx.c system_stm32xx.c 或 .icf 链接文件 Device Configuration Tool (.ioc) 图形化配置
UART 外设使能 RCC → USARTx 时钟使能 HAL 库或 LL 库初始化代码 .ioc 文件勾选 USARTx 并设置模式
中断优先级 NVIC 选项卡 → USARTx 中断使能 Options → General Options → Library Configuration .ioc 文件 → NVIC Settings 配置抢占优先级
优化等级 Target 选项卡 → Optimization Options → C/C++ Compiler → Optimizations Project Properties → C/C++ Build → Settings
建议: 为保障测试结果的可比性,三种 IDE 应使用相同的优化等级(推荐 -O2 或 -Os),并统一使用 HAL 库或 LL 库版本。

3.3 串口调试工具安装与配置

串口调试工具用于接收 STM32 通过 UART 发送的测试数据,并记录时间戳用于吞吐量计算。推荐使用 PuTTY 或 Tera Term,两者均免费且功能稳定。

3.3.1 PuTTY 安装与串口设置

  1. 从 https://www.chiark.greenend.org.uk/~sgtatham/putty/ 下载最新版 PuTTY 安装包。
  2. 运行安装程序,选择默认路径完成安装。
  3. 打开 PuTTY,在 Connection type 中选择 Serial。
  4. 在 Serial line 输入 COM 端口号(如 COM3),Speed 输入波特率(如 115200)。
  5. 左侧导航栏选择 Connection → Serial,确认数据位 8、停止位 1、无校验、流控 None。
  6. 点击 Open 打开串口终端。

3.3.2 Tera Term 安装与串口设置

  1. 从 https://ttssh2.osdn.jp/ 下载 Tera Term 安装包(推荐 ttermpro-x.x.x.exe)。
  2. 安装后启动 Tera Term,选择 Serial 连接方式。
  3. 在端口列表中选择正确的 COM 口,波特率设为 115200,其余保持默认。
  4. 点击 OK 进入终端界面。
  5. 可通过 Setup → Serial port 随时调整参数。
注意: 串口工具与 STM32 的波特率、数据位、停止位、校验位必须完全一致,否则接收数据将出现乱码或丢帧。建议在测试前使用回环测试(TX 与 RX 短接)验证通信链路。

3.4 中断模式 UART 驱动代码框架

以下代码展示了基于 STM32 HAL 库的 UART 中断接收与发送初始化框架,该框架将作为后续测试的基础。

/* UART 中断模式初始化示例 (基于 STM32 HAL 库) */
#include "stm32f4xx_hal.h"

UART_HandleTypeDef huart1;

void MX_USART1_UART_Init(void)
{
    huart1.Instance = USART1;
    huart1.Init.BaudRate = 115200;
    huart1.Init.WordLength = UART_WORDLENGTH_8B;
    huart1.Init.StopBits = UART_STOPBITS_1;
    huart1.Init.Parity = UART_PARITY_NONE;
    huart1.Init.Mode = UART_MODE_TX_RX;
    huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
    huart1.Init.OverSampling = UART_OVERSAMPLING_16;
    if (HAL_UART_Init(&huart1) != HAL_OK)
    {
        Error_Handler();
    }

    /* 使能 USART1 中断并设置优先级 */
    HAL_NVIC_SetPriority(USART1_IRQn, 5, 0);
    HAL_NVIC_EnableIRQ(USART1_IRQn);
}

/* 中断服务函数示例 */
void USART1_IRQHandler(void)
{
    HAL_UART_IRQHandler(&huart1);
}

/* 回调函数:接收完成 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
    if (huart->Instance == USART1)
    {
        /* 处理接收到的数据,可在此处添加时间戳记录 */
        /* 重新启动中断接收 */
        HAL_UART_Receive_IT(&huart1, (uint8_t *)rx_buffer, RX_BUFFER_SIZE);
    }
}

3.5 环境验证流程

完成 IDE 工程配置与串口工具安装后,建议按以下步骤验证环境是否正常工作。

  1. 编译下载: 在 IDE 中编译上述代码,下载至 STM32 开发板。
  2. 连接串口: 使用 USB-TTL 转换器将 STM32 的 USART1 TX/RX 连接至 PC,打开 PuTTY 或 Tera Term。
  3. 发送测试数据: 在代码中增加循环发送 "Hello UART\n" 的测试逻辑。
  4. 观察输出: 串口终端应稳定显示 "Hello UART" 字符串,无乱码、无丢帧。
  5. 中断响应测试: 通过串口工具发送字符,观察 STM32 是否能在中断中正确接收并回显。
验证成功标志: 串口终端连续显示预期数据,且使用示波器或逻辑分析仪测量 TX 引脚波形时,帧间隔稳定、无异常毛刺。

3.6 常见问题与解决

问题现象 可能原因 解决方案
串口无输出 波特率不匹配 / 串口号错误 / 硬件连接松动 检查设备管理器 COM 口,核对波特率,重新插拔 USB-TTL
数据乱码 波特率偏差 / 数据位或停止位不一致 使用示波器测量实际波特率,确保 IDE 与串口工具参数一致
中断不触发 NVIC 未使能 / 中断优先级配置错误 检查 HAL_NVIC_EnableIRQ 调用,确认中断向量表正确
编译报错 HAL 库版本不匹配 / 芯片头文件缺失 重新生成 .ioc 配置,或手动添加正确的 HAL 库路径

完成上述环境搭建与验证后,即可进入下一阶段:编写具体的 UART 中断模式测试用例,并开始实时性与吞吐量数据的采集与分析。