☰
RT-Thread 实战指南:立创天空星 STM32F407VET6 开发板 BSP 快速上手与进阶配置
2026/9/27 1:20:16 网站建设 项目流程
  • 操作系统
  • 嵌入式
  • 物联网
  • 嵌入式OS
  • RTOS

【免费下载链接】rt-thread

RT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/

项目地址:https://gitcode.com/gh_mirrors/rt/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.uvprojxMDK5 工程文件
bsp/stm32/stm32f407-lckfb-skystar/KconfigBSP 顶层配置入口
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 进行配置。原文档给出的标准步骤如下:

  1. 在 bsp 目录下打开 ENV 工具;
  2. 输入menuconfig命令配置工程,配置好之后保存退出;
  3. 输入pkgs --update命令更新软件包;
  4. 输入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 FATFSRT_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 FlashRT_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 粒度段)0384 KB应用程序固件
param片上 Flash384 KB128 KB参数存储
easyflashW25Q1280512 KBEasyFlash 参数库
downloadW25Q128512 KB512 KBOTA 下载区
filesystemW25Q1281 MB15 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/

项目地址:https://gitcode.com/gh_mirrors/rt/rt-thread
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询