3. 开发环境搭建:Keil / IAR / STM32CubeIDE 配置与串口调试工具安装
在进行 UART 中断模式实时性与吞吐量测试之前,必须搭建一套稳定、可复现的开发环境。本章将指导你完成三种主流 IDE(Keil MDK、IAR EWARM、STM32CubeIDE)的工程配置,以及串口调试工具(PuTTY、Tera Term)的安装与基本设置。正确的环境配置是后续测试数据可信的基础。
3.1 开发环境全景概览
下图展示了嵌入式 UART 驱动开发与测试的完整工具链关系,包括代码编辑、编译、调试、下载以及串口通信验证环节。
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 安装与串口设置
- 从 https://www.chiark.greenend.org.uk/~sgtatham/putty/ 下载最新版 PuTTY 安装包。
- 运行安装程序,选择默认路径完成安装。
- 打开 PuTTY,在 Connection type 中选择 Serial。
- 在 Serial line 输入 COM 端口号(如 COM3),Speed 输入波特率(如 115200)。
- 左侧导航栏选择 Connection → Serial,确认数据位 8、停止位 1、无校验、流控 None。
- 点击 Open 打开串口终端。
3.3.2 Tera Term 安装与串口设置
- 从 https://ttssh2.osdn.jp/ 下载 Tera Term 安装包(推荐 ttermpro-x.x.x.exe)。
- 安装后启动 Tera Term,选择 Serial 连接方式。
- 在端口列表中选择正确的 COM 口,波特率设为 115200,其余保持默认。
- 点击 OK 进入终端界面。
- 可通过 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 工程配置与串口工具安装后,建议按以下步骤验证环境是否正常工作。
- 编译下载: 在 IDE 中编译上述代码,下载至 STM32 开发板。
- 连接串口: 使用 USB-TTL 转换器将 STM32 的 USART1 TX/RX 连接至 PC,打开 PuTTY 或 Tera Term。
- 发送测试数据: 在代码中增加循环发送 "Hello UART\n" 的测试逻辑。
- 观察输出: 串口终端应稳定显示 "Hello UART" 字符串,无乱码、无丢帧。
- 中断响应测试: 通过串口工具发送字符,观察 STM32 是否能在中断中正确接收并回显。
验证成功标志: 串口终端连续显示预期数据,且使用示波器或逻辑分析仪测量 TX 引脚波形时,帧间隔稳定、无异常毛刺。
3.6 常见问题与解决
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 串口无输出 | 波特率不匹配 / 串口号错误 / 硬件连接松动 | 检查设备管理器 COM 口,核对波特率,重新插拔 USB-TTL |
| 数据乱码 | 波特率偏差 / 数据位或停止位不一致 | 使用示波器测量实际波特率,确保 IDE 与串口工具参数一致 |
| 中断不触发 | NVIC 未使能 / 中断优先级配置错误 | 检查 HAL_NVIC_EnableIRQ 调用,确认中断向量表正确 |
| 编译报错 | HAL 库版本不匹配 / 芯片头文件缺失 | 重新生成 .ioc 配置,或手动添加正确的 HAL 库路径 |
完成上述环境搭建与验证后,即可进入下一阶段:编写具体的 UART 中断模式测试用例,并开始实时性与吞吐量数据的采集与分析。