第一章:RT-Thread简介与开发环境搭建
各位同学,咱们开始第一课。做嵌入式开发这么多年,我见过不少同行在裸机编程里打转,项目一复杂就头疼。RT-Thread 的出现,说白了就是给单片机装了个「操作系统的大脑」。今天咱们就从零开始,把它的来龙去脉和环境搭好。
1.1 RT-Thread是什么
RT-Thread 是一个开源的实时操作系统内核,专门为资源受限的嵌入式设备设计。它不像 Linux 那样吃内存,STM32F103 这种 M3 内核的芯片就能跑得很欢。
我个人的理解:它就是一个任务调度器 + 一堆中间件的集合。你写应用时不用再操心「这个函数什么时候执行」「那个中断会不会冲突」,RT-Thread 帮你管好。
核心特性一览:
- 实时性:任务优先级抢占,响应时间可预测
- 轻量级:最小内核 ROM 3KB,RAM 1.5KB
- 组件丰富:文件系统、网络协议栈、设备驱动框架
- 生态活跃:国内开发者社区庞大,文档中文友好
1.2 为什么选择RT-Thread
你可能会问:FreeRTOS 不也挺好吗?嗯,确实。但 RT-Thread 有几个让我坚持用的理由:
| 对比项 | RT-Thread | FreeRTOS |
|---|---|---|
| 内核源码风格 | 面向对象,结构清晰 | C 函数堆叠,可读性一般 |
| 中间件 | 内置 finsh 控制台、DFS 文件系统 | 需第三方移植 |
| 调试工具 | 命令行交互,在线查看线程状态 | 依赖 IDE 调试器 |
| 学习曲线 | 平缓,中文资料多 | 英文文档为主 |
我在项目中遇到过一件事:用 FreeRTOS 做产品,调试时想看看某个线程的栈使用情况,得自己加打印。换成 RT-Thread 后,finsh 里敲个 list_thread 就全出来了。这种体验上的差距,用一次就回不去了。
1.3 STM32开发环境准备
环境这块,我建议新手用 Keil MDK,老手随意。咱们以 Keil 为例,IAR 流程类似。
1.3.1 安装Keil MDK
- 去 Keil 官网下载 MDK-ARM 最新版(V5.38 或更高)
- 安装时勾选「Cortex-M3」器件支持包
- 安装对应芯片的 Pack:STM32F1xx_DFP
- 破解(你懂的,正版用户请忽略)
避坑指南: 我曾经因为 Keil 版本太老,编译 RT-Thread 时一堆语法错误。后来发现是编译器 AC5 和 AC6 的差异。建议直接用 AC6(V6 编译器),省心。
1.3.2 安装串口调试工具
推荐 SecureCRT 或 Putty。波特率 115200,数据位 8,停止位 1,无校验。后面 finsh 控制台全靠它。
1.4 RT-Thread源码获取与工程模板创建
源码获取有两种方式:
- 方式一:GitHub 克隆 ——
git clone https://github.com/RT-Thread/rt-thread.git - 方式二:官网下载压缩包 —— 访问 rt-thread.org,选「下载」页面
我个人习惯用 GitHub,方便后续更新。下载后目录结构是这样的:
rt-thread/
├── bsp/ # 板级支持包(STM32各系列)
├── components/ # 组件(finsh、DFS、lwIP等)
├── include/ # 内核头文件
├── libcpu/ # CPU架构移植代码
├── src/ # 内核源码
└── tools/ # 构建脚本
1.4.1 创建工程模板
咱们以 STM32F103ZET6 为例,创建最小工程:
- 复制
bsp/stm32/stm32f103ze文件夹到工作目录,重命名为my_project - 打开 Keil 工程文件
project.uvprojx - 在 Target 选项里确认芯片型号和 Flash 大小
- 编译,应该零错误零警告
小技巧: 第一次编译如果报错找不到 rtconfig.h,去 board 文件夹下复制 rtconfig.h.template 改名为 rtconfig.h。这个文件是 RT-Thread 的配置总开关。
1.5 知识体系总览
下面这张图帮你理清本章的核心脉络:
1.6 验证环境是否正常
工程编译通过后,下载到开发板。打开串口工具,复位开发板,你应该能看到:
\ | /
- RT - Thread Operating System
/ | \ 4.1.0 build Jan 10 2025
2006 - 2025 Copyright by RT-Thread team
msh />
看到这个 msh /> 提示符,恭喜你,环境搭建成功!
验证清单:
- ✅ Keil 编译零错误零警告
- ✅ 下载到开发板能运行
- ✅ 串口输出 RT-Thread 启动信息
- ✅ 输入
help能看到命令列表
嗯,到这里第一章就结束了。环境搭好,后面咱们才能动手写任务调度代码。记住:工欲善其事,必先利其器。别急着往下赶,先把工程跑通再说。