从零开始玩转RT-Thread:正点原子战舰V3开发板实战指南
第一次接触嵌入式实时操作系统时,那种既兴奋又忐忑的心情至今记忆犹新。看着开发板上闪烁的LED,仿佛打开了新世界的大门。本文将带你从硬件连接到软件调试,完整走一遍RT-Thread在正点原子战舰V3开发板上的运行流程,特别针对新手容易踩坑的串口调试环节给出详细解决方案。
1. 开发环境准备
工欲善其事,必先利其器。在开始前,我们需要准备好以下工具和环境:
-
硬件部分 :
- 正点原子战舰V3开发板(主控STM32F103ZET6)
- USB转TTL模块(推荐CH340芯片版本)
- 配套USB数据线(用于供电和程序下载)
- 杜邦线若干(建议使用彩色线区分功能)
-
软件部分 :
- Keil MDK5(建议5.25以上版本)
- RT-Thread Studio(可选,提供更友好的开发环境)
- 串口调试工具(强烈推荐sscom5.13.1版本)
- ST-Link驱动(用于程序烧录)
注意:开发板上的BOOT跳线帽需要设置为从Flash启动(BOOT0置0,BOOT1任意),这是很多新手容易忽略的关键点。
安装MDK5时,记得勾选STM32F1系列的Device Family Pack。安装完成后,可以通过Pack Installer检查是否已安装最新版的STM32F1xx_DFP。
2. 硬件连接详解
正确的硬件连接是成功的第一步。战舰V3开发板提供了多种调试接口,我们需要特别注意以下几点:
-
电源连接 :
- 使用Micro USB线连接开发板的"USB_232"接口
- 将电源开关拨到"ON"位置,此时电源指示灯(PWR)应亮起
-
调试器连接 :
- 开发板自带ST-Link调试器,通过USB线连接即可
- 确认设备管理器中能识别到ST-Link设备
-
串口连接 :
- 使用USB转TTL模块连接开发板的UART1(PA9-TX,PA10-RX)
- 连接时注意交叉连接:TTL模块的TX接开发板的RX,RX接TX
- GND线必须连接,否则可能导致通信不稳定
下表总结了关键接口的连接方式:
| 开发板接口 | TTL模块接口 | 功能说明 |
|---|---|---|
| PA9 (TX) | RX | 串口发送 |
| PA10 (RX) | TX | 串口接收 |
| GND | GND | 信号地 |
连接完成后,可以先用sscom测试串口是否通畅。打开sscom,选择正确的COM口,设置波特率为115200,发送任意字符,如果接线正确,会看到开发板的RX/TX指示灯闪烁。
3. 工程配置与编译
RT-Thread为战舰V3开发板提供了完整的BSP支持,我们可以直接使用官方提供的工程模板:
-
获取源码 :
git clone https://github.com/RT-Thread/rt-thread.git cd rt-thread/bsp/stm32/stm32f103-atk-warshipv3 -
打开工程 :
-
双击
project.uvprojx文件,使用MDK5打开工程 - 首次打开可能需要选择STM32F103ZE作为目标设备
-
双击
-
关键配置检查 :
-
在
Options for Target→Target中确认晶振频率为12MHz -
在
C/C++选项卡中确认预定义宏包含RT_USING_UART1 -
在
Debug选项卡中选择ST-Link调试器
-
在
-
编译工程 :
-
点击
Rebuild按钮进行完整编译 - 首次编译可能需要下载依赖的软件包,耐心等待完成
-
点击
提示:如果遇到"No ST-Link detected"错误,尝试重新插拔USB线或更新ST-Link驱动。
编译成功后,控制台会输出类似以下信息:
Program Size: Code=xxxx RO-data=xxxx RW-data=xxxx ZI-data=xxxx
FromELF: creating hex file...
".\build\rtthread.axf" - 0 Error(s), 0 Warning(s).
4. 程序下载与调试
有了编译生成的hex文件,接下来就是将其烧录到开发板中:
-
连接ST-Link :
- 使用USB线连接开发板的ST-Link接口
- 确认MDK识别到了调试器(可在Debug选项卡中查看)
-
下载程序 :
-
点击
Load按钮开始烧录 - 观察输出窗口,成功后会显示"Flash Load finished"
-
点击
-
复位运行 :
- 按下开发板的复位键(RST)重启系统
- 此时两个用户LED(DS0和DS1)应开始交替闪烁
如果遇到下载失败的情况,可以尝试以下排查步骤:
- 检查ST-Link驱动是否安装正确
- 确认开发板供电正常(PWR灯亮)
- 尝试降低下载速度(在Debug设置中调整)
- 检查BOOT引脚设置是否正确
5. 串口调试实战与避坑指南
串口调试是嵌入式开发中最常用的调试手段,但也是新手最容易踩坑的环节。以下是经过验证的可靠配置方案:
-
终端工具选择 :
- 强烈推荐使用sscom而非PuTTY或XShell
- PuTTY在某些版本会导致RT-Thread无法正常启动
- sscom5.13.1版本经过长期验证最为稳定
-
参数配置 :
- 波特率:115200
- 数据位:8
- 停止位:1
- 校验位:None
- 流控制:None
-
常见问题解决 :
现象 :打开串口后系统不启动
- 检查RTS/DSR流控制是否被误开启
- 尝试更换USB转TTL模块(推荐使用CH340芯片)
- 确认串口线连接正确(TX-RX交叉)
现象 :接收数据乱码
- 确认双方波特率完全一致
- 检查开发板晶振是否为12MHz
- 尝试降低波特率测试(如改为9600)
现象 :输入无响应
-
在msh命令行中输入
list_device确认uart1设备存在 - 检查串口是否被其他程序占用
- 重新插拔USB线尝试
以下是一个简单的测试用例,可以验证串口功能是否正常:
#include <rtthread.h>
#include <rtdevice.h>
static void uart_test(int argc, char *argv[])
{
rt_device_t dev = rt_device_find("uart1");
if (dev)
{
rt_device_open(dev, RT_DEVICE_FLAG_RDWR);
rt_device_write(dev, 0, "Hello RT-Thread!\n", 17);
rt_kprintf("UART1 test passed!\n");
}
}
MSH_CMD_EXPORT(uart_test, uart1 test sample);
将这段代码添加到
main.c
中,重新编译下载后,在msh中输入
uart_test
,如果看到终端输出"Hello RT-Thread!",说明串口工作正常。
6. 进阶功能探索
成功运行RT-Thread后,可以进一步探索更多功能:
-
文件系统挂载 :
#include <dfs_fs.h> int mnt_init(void) { if (dfs_mount("flash0", "/", "elm", 0, 0) == 0) rt_kprintf("SPI Flash mounted to /\n"); return 0; } INIT_ENV_EXPORT(mnt_init); -
网络功能配置 :
- 通过ENV工具开启lwIP支持
- 配置DM9000以太网驱动
- 测试ping功能
-
GUI开发 :
- 启用RT-Thread的Persimmon UI框架
- 开发简单的图形界面应用
-
传感器扩展 :
- 通过I2C接口连接温湿度传感器
- 实现数据采集和上传功能
// 简单的温度读取示例
static void read_temp(void)
{
rt_device_t sensor = rt_device_find("sht20");
if (sensor)
{
float temp, humi;
rt_device_open(sensor, RT_DEVICE_FLAG_RDWR);
rt_device_control(sensor, RT_SENSOR_CTRL_READ, &temp);
rt_kprintf("Temperature: %.1fC\n", temp);
}
}
遇到任何问题时,建议查阅RT-Thread官方文档,或者在开发者社区提问。记住,每个嵌入式开发者都经历过从零开始的过程,多实践、多思考,很快你就能熟练驾驭这款强大的开发板了。
&spm=1001.2101.3001.5002&articleId=100710852&d=1&t=3&u=fd1997ce6aae437aa39087aac8ff2dbb)
599

被折叠的 条评论
为什么被折叠?



