- 操作系统
- 嵌入式
- 物联网
- 嵌入式OS
- RTOS
【免费下载链接】rt-thread
RT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/
本指南以 RT-Thread 官方仓库中bsp/stm32/stm32f407-lckfb-skystar(立创梁山派·天空星 STM32F407 开发板)BSP 为讲解对象,从硬件特性、外设支持、快速上手到 ENV 深度配置,带你一步步把 RT-Thread 操作系统跑起来,并解锁板载 W25Q128 Flash、文件系统、FAL 分区、软件 SPI/I2C 等高级资源。读完本文,你将掌握该 BSP 的完整使用链路:依赖拉取、MDK5 编译下载、串口验证、menuconfig 裁剪与 scons 工程重生成,并理解其背后时钟配置、LED 驱动与 FAL 分区表的源码实现。
开发板与 BSP 概览
立创天空星(梁山派·天空星)是由立创开发板推出的高性价比开发板,软硬件全开源。其核心板在设计上充分考虑了与多种 100 脚封装单片机的兼容性,不仅适用于特定芯片,还能适配市场上多家厂商的 100 脚微控制器,适用范围和灵活性都很强。本 BSP 适配的主控芯片为STM32F407VET6(Cortex-M4F,168 MHz 主频,512 KB Flash,128 KB SRAM)。
为了最大限度方便开发者,核心板通过排针将几乎所有可用 IO 引脚引出,无需复杂焊接即可连接外部模块与设备,非常适合学生电子竞赛、创客活动以及个人 DIY 快速原型制作场景;同时兼顾了竞赛场景对稳定性、可靠性以及小型项目对低成本的需求。
官方资料罗列
原 BSP 文档为开发者整理了以下配套资料(对应原文「资料罗列」章节),可在立创官方渠道获取:
- 硬件开源地址:核心板原理图与 PCB 工程开源仓库;
- 硬件文档:芯片、电源、时钟等硬件设计手册;
- 入门手册:开箱、烧录与基础实验指南;
- 模块移植手册:各类外设模块的接入与移植参考;
- 购买地址:官方购买页面。
BSP 目录结构
该 BSP 在仓库中的关键目录与文件如下:
| 路径 | 作用 |
|---|---|
| bsp/stm32/stm32f407-lckfb-skystar/board | 板级驱动:时钟配置、Kconfig 硬件配置项、链接脚本(link.lds/link.icf/link.sct)、FAL/文件系统/电源管理移植 |
| bsp/stm32/stm32f407-lckfb-skystar/applications | 应用层:main.c点灯程序、RTduino 兼容层 |
| bsp/stm32/stm32f407-lckfb-skystar/project.uvprojx | MDK5 工程文件 |
| bsp/stm32/stm32f407-lckfb-skystar/Kconfig | BSP 顶层配置入口 |
| bsp/stm32/stm32f407-lckfb-skystar/rtconfig.h | 当前工程配置宏定义 |
BSP 同时提供 MDK4、MDK5 工程并支持 GCC 开发环境,也可以使用 RT-Thread Studio 进行开发,覆盖了主流嵌入式开发工具链。
外设支持一览
本 BSP 对外设的支持情况如下(继承自原文档外设支持表):
| 片上外设 | 支持情况 | 备注 |
|---|---|---|
| GPIO | 支持 | PA0, PA1... → PIN: 0, 1...81 |
| UART | 支持 | UART0 - UART6 |
| I2C | 支持 | I2C1 |
| SPI | 支持 | SPI0 - SPI2 |
| ADC | 支持 | ADC0 - ADC2 |
| TF CARD | 支持 | SDIO |
| SPI FLASH | 支持 | SPI1 |
| 扩展模块 | 支持情况 | 备注 |
| 暂无 | 暂不支持 | 暂不支持 |
结合源码可以进一步明确各外设在 RT-Thread 设备框架中的实际设备名:
- UART:从 board/Kconfig 可见,片上串口配置项为
BSP_USING_UART1~BSP_USING_UART6,对应设备名uart1~uart6;默认仅开启uart1(作为控制台),其余默认关闭; - SPI:配置项为
BSP_USING_SPI1、BSP_USING_SPI2,板载 W25Q128 Flash 挂接在 SPI1 上(SPI FLASH (W25Q128 spi1)); - ADC:配置项为
BSP_USING_ADC1、BSP_USING_ADC3(ADC3 的 CH4/CH5/CH14/CH15 在 Arduino 引脚映射中被引出); - I2C:片上 I2C1 支持,另有软件 I2C(
swi2c1)可用; - TF CARD:通过 SDIO 接口支持,Kconfig 中还提供了
SDIO_MAX_FREQ频率配置项(范围 0~24000000,默认 1000000)。
说明:原文档表格中的 UART0-UART6、SPI0-SPI2、ADC0-ADC2 编号沿用芯片外设的习惯写法;在 RT-Thread 设备框架下,实际注册的设备名为
uart1-uart6、spi1-spi2、adc1/adc3,使用list_device命令即可在终端查看。
快速上手:让系统跑起来
原文档将使用说明分为「快速上手」与「进阶使用」两章。快速上手面向刚接触 RT-Thread 的新手,只需几步即可看到实验效果。
第 0 步:拉取必要的 HAL 库与 CMSIS 库
请注意!!!在执行编译工作前,必须先打开 ENV 工具执行以下指令,该指令用于拉取必要的 HAL 库及 CMSIS 库,否则工程无法通过编译:
pkgs --update这一步会从软件包中心下载本 BSP 依赖的 STM32 HAL 驱动包(该 BSP 通过libraries/HAL_Drivers复用 STM32 系列公共驱动),是所有后续编译动作的前提。
硬件连接
使用数据线连接开发板到 PC;使用 USB 转 TTL 模块连接PA9(MCU TX)和PA10(MCU RX),然后上电。PA9/PA10 即 USART1 的 TX/RX,对应 RT-Thread 控制台设备uart1。
编译下载
双击project.uvprojx文件打开 MDK5 工程,编译并下载程序到开发板。工程默认配置使用CMSIS-DAP 仿真器下载程序,在通过 CMSIS-DAP 连接开发板的基础上,点击下载按钮即可完成烧录。
运行结果
下载成功后系统自动运行,板载 LED 闪烁(源码见 applications/main.c,LED 接在 PB2):
#define GPIO_LED GET_PIN(B, 2) int main(void) { rt_pin_mode(GPIO_LED, PIN_MODE_OUTPUT); while (1) { rt_pin_write(GPIO_LED, PIN_HIGH); rt_thread_mdelay(500); rt_pin_write(GPIO_LED, PIN_LOW); rt_thread_mdelay(500); } }主函数通过rt_pin_mode将 PB2 配置为输出模式,再循环调用rt_pin_write配合rt_thread_mdelay(500)实现 500 ms 间隔的亮灭闪烁——这是 RT-Thread PIN 设备框架最基础的使用范式(GET_PIN宏由drv_gpio.h提供)。
将开发板对应串口连接到 PC,在终端工具中打开相应串口(115200-8-1-N),复位设备后可以看到 RT-Thread 的启动输出信息:
\ | / - RT - Thread Operating System / | \ 5.1.0 build Apr 13 2024 11:59:40 2006 - 2024 Copyright by RT-Thread team控制台设备名与波特率可从 rtconfig.h 得到印证:RT_CONSOLEBUF_SIZE 128、RT_CONSOLE_DEVICE_NAME "uart1";串口 115200 波特率的初始值配置在 board/CubeMX_Config/Src/main.c 的huart1.Init.BaudRate = 115200。
底层视角:系统时钟从哪来
系统上电后的时钟初始化在 board/board.c 的SystemClock_Config中完成,核心配置为:
- 振荡器选择HSI(内部高速时钟),PLL 源为 HSI;
- 锁相环参数:
PLLM = 8、PLLN = 168、PLLP = 2、PLLQ = 7,得到SYSCLK = 168 MHz; - AHB 不分频(HCLK = 168 MHz),APB1 四分频(42 MHz),APB2 二分频(84 MHz),Flash 等待周期 5。
这套配置决定了整板外设的时基:UART 波特率、定时器计数频率、ADC 采样时钟等均以此为基准,是后续配置外设时的重要前提。
进阶使用:ENV 配置板载资源
此 BSP 默认只开启了 GPIO 和串口 0(UART1 控制台)的功能,如需使用高级功能,需要利用 ENV 工具对 BSP 进行配置。原文档给出的标准步骤如下:
- 在 bsp 目录下打开 ENV 工具;
- 输入
menuconfig命令配置工程,配置好之后保存退出; - 输入
pkgs --update命令更新软件包; - 输入
scons --target=mdk4/mdk5/iar命令重新生成工程。
menuconfig的图形化配置界面入口来自 bsp/stm32/stm32f407-lckfb-skystar/Kconfig,其硬件配置菜单定义在 board/Kconfig,分为「Onboard Peripheral Drivers」(板载外设)与「On-chip Peripheral Drivers」(片上外设)两大菜单。
板载外设菜单(Onboard Peripheral Drivers)
| 配置项 | 说明 | 关联资源 |
|---|---|---|
BSP_USING_SPI_FLASH | 使能板载 SPI Flash(W25Q128,挂接 SPI1),自动选择 SPI 总线与 SFUD 组件 | RT_USING_SFUD、RT_SFUD_USING_SFDP |
BSP_USING_FS | 使能文件系统,可进一步选择 SD 卡 FATFS 或 Flash FATFS | RT_USING_DFS、RT_USING_DFS_ROMFS |
BSP_USING_SDCARD_FATFS | 使能 SD 卡 FATFS(自动关联 SDIO),支持文件系统自动挂载(BSP_USING_FS_AUTO_MOUNT,默认开启) | RT_USING_DFS_ELMFAT |
BSP_USING_FLASH_FATFS | 使能基于 W25Q128 的 FAL 文件系统分区 | BSP_USING_FAL |
BSP_USING_FAL | 使能 FAL(Flash 抽象层),同时启用片上 Flash 与 SPI1 Flash | RT_USING_FAL、FAL_PART_HAS_TABLE_CFG、FAL_USING_SFUD_PORT |
片上外设菜单(On-chip Peripheral Drivers)
该菜单下可从源码 board/Kconfig 看到的可配置外设包括:
- GPIO(默认开启,
select RT_USING_PIN); - UART1~UART6:每个串口可独立使能,并支持 RX/TX DMA 开关与缓冲区大小配置(V2 串口框架下 RX 缓冲默认 256 字节、TX 缓冲默认 0、DMA ping-pong 缓冲默认 64 字节,范围详见 Kconfig);
- TIM:TIM11、TIM13、TIM14 定时器;
- PWM:PWM1(CH2/CH3)、PWM2(CH3/CH4)、PWM3(CH2/CH4)、PWM4(CH1)、PWM14(CH1);
- 片上 Flash(
BSP_USING_ON_CHIP_FLASH); - 软件 SPI:
swspi1(SCK=101/MISO=99/MOSI=97)与swspi2(SCK=19/MISO=20/MOSI=21),引脚号可自行修改; - 硬件 SPI:SPI1、SPI2,均支持 TX/RX DMA 可选;
- ADC:ADC1、ADC3;
- 软件 I2C:
swi2c1(SCL=24/SDA=25); - DAC:DAC1;
- RTC:可选择 LSE 或 LSI 作为时钟源;
- 看门狗 WDT、SDIO(含
SDIO_MAX_FREQ频率配置)、USB Device、脉冲编码器 PULSE_ENCODER4、电源管理 PM(BSP_USING_ONBOARD_PM)。
配置完成后执行scons --target=mdk4/mdk5/iar重新生成对应 IDE 工程,新使能的外设驱动即会被自动纳入编译。
存储资源:FAL 分区表解读
开启 FAL 与文件系统后,存储分区布局定义在 board/ports/fal/fal_cfg.h 中:
#define FAL_PART_TABLE \ { \ {FAL_PART_MAGIC_WROD, "app", "onchip_flash_128k", 0, 384 * 1024, 0}, \ {FAL_PART_MAGIC_WROD, "param", "onchip_flash_128k", 384 * 1024, 512 * 1024, 0}, \ {FAL_PART_MAGIC_WROD, "easyflash", "W25Q128", 0, 512 * 1024, 0}, \ {FAL_PART_MAGIC_WROD, "download", "W25Q128", 512 * 1024, 512 * 1024, 0}, \ {FAL_PART_MAGIC_WROD, "filesystem", "W25Q128", (512 + 512) * 1024, 15 * 1024 * 1024, 0}, \ }分区表含义如下:
| 分区名 | 所在设备 | 偏移 | 大小 | 典型用途 |
|---|---|---|---|---|
app | 片上 Flash(128K 粒度段) | 0 | 384 KB | 应用程序固件 |
param | 片上 Flash | 384 KB | 128 KB | 参数存储 |
easyflash | W25Q128 | 0 | 512 KB | EasyFlash 参数库 |
download | W25Q128 | 512 KB | 512 KB | OTA 下载区 |
filesystem | W25Q128 | 1 MB | 15 MB | 文件系统(FATFS) |
从 fal_cfg.h 还可以看到 Flash 设备表同时挂载了stm32_onchip_flash_128k与w25q128两个设备,片上 Flash 按 16K/64K/128K 三种擦除粒度分别抽象为独立设备,FAL 会根据分区位置自动选择合适粒度的 Flash 设备。该分区布局同时支撑着 EasyFlash、OTA 下载与文件系统三类常见场景,是板载存储能力的核心骨架。
扩展能力:RTduino Arduino 生态兼容
虽然原文档的「扩展模块」表格标记为暂不支持,但从源码看该 BSP 已具备一项重要扩展能力:RTduino——RT-Thread 的 Arduino 生态兼容层。详见 applications/arduino_pinout/README.md。
在 ENV 下执行menuconfig(或 RT-Thread Studio 的 RT-Thread Settings)按如下路径开启:
Hardware Drivers Config ---> Onboard Peripheral Drivers ---> [*] Compatible with Arduino Ecosystem (RTduino)开启后即可按 Arduino 编程习惯开发,并能复用 Arduino 社区大量现成库。板载引脚已按 Arduino 编号排布,例如 D0/D1 为串口(默认被uart1接管)、D33/D34 为板载 R_LED/B_LED、D35 为蜂鸣器、D36-D39 为四向按键、A0-A3 为 ADC3 通道、DAC0 为 DAC1-CH1 等,完整映射见 pins_arduino.c 与 pins_arduino.h。示例程序 arduino_main.cpp 展示了最简用法:setup()中初始化串口,loop()中循环打印Hello Arduino!并延时 800 ms。
注意事项与维护信息
- 原文档「注意事项」章节目前为「暂无」;需要特别注意的是,编译前务必执行
pkgs --update拉取 HAL/CMSIS 依赖,这是最常见的编译失败原因。 - 本 BSP 维护人:yuanzihao,邮箱 y@yzh.email。如在使用中遇到问题,可联系维护人或在 RT-Thread 社区反馈。
总结
从立创天空星 STM32F407VET6 的硬件特性出发,本文完整梳理了该 BSP 的外设支持矩阵、快速上手四步流程(拉依赖 → 硬件连接 → MDK5 编译下载 → 串口验证)、ENV 进阶配置方法,并结合仓库源码解读了 168 MHz 时钟配置、PB2 点灯驱动、FAL 分区表与 RTduino 扩展能力。这套「文档 + 源码互证」的路径,同样适用于 RT-Thread 仓库中其他 STM32 BSP,可作为你快速迁移到任意开发板的标准方法论。
- 操作系统
- 嵌入式
- 物联网
- 嵌入式OS
- RTOS
【免费下载链接】rt-thread
RT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/
相关推荐
RT-Thread 移植实践:立创天空星 HC32F4A0PITB 开发板 BSP 详解与快速上手
RT Thread 移植实践:立创天空星 HC32F4A0PITB 开发板 BSP 详解与快速上手 本文围绕 RT Thread 仓库中 bsp/hc32/lc
操作系统嵌入式物联网嵌入式OSRTOSRT-Thread BSP 实战:NUCLEO-G474RE 开发板快速上手与进阶配置指南
RT Thread BSP 实战:NUCLEO G474RE 开发板快速上手与进阶配置指南 本篇指南围绕 RT Thread 开源仓库中的 NUCLEO G47
操作系统嵌入式物联网嵌入式OSRTOSRT-Thread GD32F407V-LCKFB 立创天空星开发板 BSP 使用与配置指南
RT Thread GD32F407V LCKFB 立创天空星开发板 BSP 使用与配置指南 本指南以 RT Thread 仓库中 bsp/gd32/arm/g
操作系统嵌入式物联网嵌入式OSRTOS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考