2. 开发环境搭建:从CubeMX到串口工具
做嵌入式开发,环境搭建是第一步。这一步要是没弄好,后面写再多代码也跑不起来。我见过不少新手,代码写得挺漂亮,结果卡在工程配置上,一查是时钟没配对,或者串口引脚搞错了。
这一章,咱们就把开发环境从头到尾捋一遍。你跟着我的步骤走,保证半小时内就能看到调试信息在屏幕上滚动。
2.1 STM32CubeMX工程生成
STM32CubeMX是ST官方出的图形化配置工具。说白了,它帮你生成初始化代码,省得你对着寄存器手册一行行敲。我个人习惯,不管项目大小,都用它来生成底层代码,省时省力。
2.1.1 新建工程与芯片选择
打开CubeMX,点击"New Project"。在搜索框里输入你的芯片型号,比如我常用的STM32F407ZGT6。选好后双击,进入配置界面。
2.1.2 时钟树配置
时钟是MCU的心脏。配错了,外设要么跑不起来,要么跑得不准。我建议你养成习惯:先配时钟,再配外设。
进入"Clock Configuration"页面,按以下步骤操作:
- 选择HSE(外部高速晶振),一般板子上是8MHz或25MHz
- 配置PLL倍频系数,让主频跑到芯片最高频率(比如168MHz)
- 确认APB1、APB2总线时钟分频正确
举个例子,我用8MHz晶振配STM32F407:
HSE = 8MHz
PLL_M = 8
PLL_N = 336
PLL_P = 2
SYSCLK = 8 / 8 * 336 / 2 = 168MHz
APB1 = 168 / 4 = 42MHz
APB2 = 168 / 2 = 84MHz
2.1.3 串口外设配置
调试机器人运动学参数,串口是命根子。没有它,你看不到电机角度、速度、加速度这些数据。
在"Pinout & Configuration"页面:
- 找到USART1(或你板子上可用的串口)
- Mode选择"Asynchronous"(异步模式)
- 波特率设115200,数据位8,停止位1,无校验
- 确认TX、RX引脚分配正确
我一般还会开启串口中断,方便接收数据。在NVIC设置里勾上USART1 global interrupt就行。
2.1.4 生成代码
点击"Project Manager"标签,设置工程名和路径。Toolchain / IDE选MDK-ARM(对应Keil)或IAR。然后点右上角的"GENERATE CODE",代码就自动生成了。
2.2 Keil/IAR IDE配置
代码生成好了,接下来要用IDE打开它。我平时用Keil多一些,但IAR也偶尔用。两者配置思路差不多,我分开讲。
2.2.1 Keil MDK配置
打开Keil,点击"Project" -> "Open Project",找到你刚才生成的.uvprojx文件。
编译前,先检查几个关键设置:
- Target选项卡: 确认晶振频率和芯片型号正确
- Output选项卡: 勾上"Create HEX File",方便烧录
- C/C++选项卡: 优化等级建议选-O0(调试阶段),发布时再改-O2
然后点"Build"(或按F7)。如果编译通过,恭喜你,环境搭好了。
2.2.2 IAR EWARM配置
IAR的配置和Keil大同小异。打开.eww文件后,主要检查:
- General Options -> Target: 选对芯片型号
- Compiler -> Optimizations: 调试阶段选None
- Linker -> Output: 勾上"Allow C-SPY debugging"
我个人觉得IAR的编译速度比Keil快一点,但Keil的调试界面更直观。看个人喜好吧。
2.3 串口调试工具安装与验证
环境搭好了,代码也编译通过了。但怎么知道程序跑没跑对?这时候就需要串口调试工具了。
2.3.1 常用串口工具对比
| 工具 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|
| Putty | 轻量、免费、支持SSH | 界面简陋、不支持日志保存 | 快速测试、临时调试 |
| SecureCRT | 功能强大、支持脚本、日志管理好 | 收费、配置稍复杂 | 长期项目、批量调试 |
| 串口助手(野火/正点原子) | 中文界面、波形显示 | 功能单一 | 初学者、简单数据查看 |
我个人习惯用SecureCRT,因为它支持多标签页,还能自动记录日志。调试机器人运动学参数时,日志太重要了——你总不想每次都盯着屏幕抄数据吧?
2.3.2 Putty安装与验证
Putty安装很简单,官网下载exe文件,双击运行就行。配置步骤:
- Connection type选"Serial"
- Serial line填你的串口号(比如COM3)
- Speed填115200(和CubeMX里配的一致)
- 点击"Open"
如果连接成功,你会看到一个黑乎乎的窗口。这时候给板子通电,如果程序里写了串口打印,窗口里应该能看到数据。
2.3.3 SecureCRT安装与验证
SecureCRT需要付费,但网上有试用版。安装后配置:
- 点击"Quick Connect"
- Protocol选"Serial"
- Port选你的串口号
- Baud rate填115200
- 勾上"RTS/CTS"(流控制,有些板子需要)
- 点击"Connect"
连接成功后,底部状态栏会显示"Connected"。这时候你可以右键点击标签页,选择"Log Session",把数据保存到文件里。
2.3.4 验证串口通信
环境都搭好了,怎么验证?写个简单的测试程序:
// main.c
#include "main.h"
#include "usart.h"
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_USART1_UART_Init();
uint8_t msg[] = "Hello from STM32!\r\n";
while (1)
{
HAL_UART_Transmit(&huart1, msg, sizeof(msg) - 1, 1000);
HAL_Delay(1000);
}
}
编译烧录后,打开串口工具。如果每秒看到一次"Hello from STM32!",说明整个开发环境搭建成功了。
- CubeMX工程生成无报错
- Keil/IAR编译通过
- 串口工具能连接
- 能看到数据输出
2.4 本章知识体系
下面这张图帮你理清本章的核心逻辑。从CubeMX生成工程,到IDE编译,再到串口工具验证,每一步都有明确的输入输出。
环境搭建是枯燥的,但也是必须的。我见过太多人跳过这一步,直接写代码,结果后面花了两倍时间排查环境问题。你想想看,与其到时候抓狂,不如现在花半小时把基础打牢。