首页/新闻资讯/正文详情

RT-Thread 星火一号 STM32F407 BSP 开发指南:从快速上手到设备树驱动

发布时间:2026/9/26 12:00:42 来源:云帆数科 栏目:资讯中心
RT-Thread 星火一号 STM32F407 BSP 开发指南:从快速上手到设备树驱动
操作系统嵌入式物联网嵌入式OSRTOS【免费下载链接】rt-threadRT-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-rt-spark板级支持包BSP展开系统介绍 RT-Thread 星火一号Spark-1STM32F407 开发板的资源分布、外设支持情况以及基于 ENV 工具与 MDK5/IAR/GCC 的完整工程构建流程。读完本文你将掌握该 BSP 的快速上手方法、menuconfig 外设配置技巧并能通过RT_USING_DM切换到设备树驱动的现代开发模式。1. 板级支持包概述本文档由 RT-Thread 开发团队提供是面向 STM32F407 星火一号开发板的 BSPBoard Support Package板级支持包说明。内容覆盖三个部分开发板资源介绍BSP 快速上手进阶使用方法通过快速上手章节开发者可以迅速将 RT-Thread 运行在开发板上进阶使用章节则帮助开发者借助 ENV 工具开启更多板载资源充分发挥 RT-Thread 的设备驱动能力。该 BSP 的完整工程与配置均位于仓库 bsp/stm32/stm32f407-rt-spark 目录同时提供 中文版说明 供对照阅读。2. 星火一号开发板介绍星火一号 STM32F407 是 RT-Thread 推出的一款基于 ARM Cortex-M4 内核的开发板最高主频 168MHz板载资源丰富可以充分发挥 STM32F407 的芯片性能。2.1 板载资源清单开发板常用板载资源如下资源类别具体配置MCUSTM32F407ZGT6主频 168MHz1024KB FLASH192KB RAM外部 FLASHW25Q128SPI 接口16MB常用外设LED 2 个LED_R红色PF12、LED_B绿色PF11按键 4 个KEY_UP兼具唤醒功能PINPC5、KEY_DOWNPINPC1、KEY_LEFTPINPC0、KEY_RIGHTPINPC4常用接口USB 转串口、SD 卡接口、USB SLAVE、USB HOST调试接口标准 ST-LINK2.2 内存与时钟的源码级确认在源码层面board/board.h 定义了内存布局STM32_SRAM_SIZE为 128KB0x20000000起始、STM32_FLASH_SIZE为 1MB0x08000000起始堆区HEAP_BEGIN在 ARMCC 下取Image$$RW_IRAM1$$ZI$$LimitGCC 下取__bss_end堆结束地址为 SRAM 末端这决定了 RT-Thread 动态内存分配的可用范围。board/board.c 中的SystemClock_Config展示了时钟树配置以 HSE 为 PLL 源PLLM4、PLLN168、PLLP2得到 168MHz 系统时钟同时使能 LSI/LSE 低速时钟并选择 LSE 作为 RTC 时钟源这为后续的 RTC 低功耗与掉电保持功能打下基础。3. 外设支持情况BSP 当前对外设的支持情况如下板载外设支持情况备注USB 转串口COM1支持COM2支持与以太网、PWM 冲突如需使用该外设请使用 CubeMX 重新配置 UART2 管脚COM3支持片上外设支持情况备注UART支持UART1/2/3SPI支持SPI1/2/3ADC支持RTC支持支持外部晶振和内部低速时钟WDT支持3.1 外设冲突与依赖的源码依据从 board/Kconfig 可以进一步确认外设之间的依赖关系BSP_USING_COM2的依赖条件为(!BSP_USING_ETH !BSP_USING_PWM)即开启以太网或 PWM 时 COM2UART2不可用这与文档中和以太网、PWM 冲突的说明完全一致RTC 通过BSP_USING_ONCHIP_RTC使能并在BSP_RTC_LS_SEL选项中提供 LSE/LSI 两种时钟源选择默认BSP_RTC_USING_LSE串口驱动在BSP_USING_UART菜单下按 UART1UART6 分别提供 RX/TX DMA 开关依赖RT_SERIAL_USING_DMA以及 V2 版本下的收发缓冲区大小配置如 UART1 的BSP_UART1_RX_BUFSIZE默认 256、范围 6465535。此外Kconfig 还暴露了大量文档表格之外的可选外设SPI FLASHW25Q64 挂载于 SPI2、软件 I2C/SPI 总线swi2c15、swspi1/2均带默认引脚、SDIO、USB Device/Host、RS485UART6、板载 LCDST7787、LED 矩阵、LVGL、ENC28J60 以太网、RW007 WLAN、AHT21/AP3216C/ICM20608 传感器、CAN、音频ES8388以及 RTduinoArduino 生态兼容等均可在 menuconfig 中按需开启。4. 使用说明使用说明分为两个章节快速上手为刚接触 RT-Thread 的新手准备遵循简单步骤即可将 RT-Thread 运行在开发板上看到实验效果进阶使用为需要在 RT-Thread 上使用更多开发板资源的开发者准备通过 ENV 工具配置 BSP开启更多板载资源。4.1 快速上手本 BSP 为开发者提供 MDK5 和 IAR 工程并支持 GCC 开发环境。下面以 MDK5 开发环境为例介绍如何将系统运行起来。请注意在执行编译工作前请先打开 ENV 执行以下指令该指令用于拉取必要的 HAL 库及 CMSIS 库否则无法通过编译pkgs --update硬件连接使用数据线连接开发板到 PC打开电源开关。编译下载双击project.uvprojx文件位于 bsp/stm32/stm32f407-rt-spark/project.uvprojx打开 MDK5 工程编译并下载程序到开发板。工程默认配置使用 JLink 下载程序在通过 JLink 连接开发板的基础上点击下载按钮即可下载程序到开发板。运行结果下载程序成功之后系统会自动运行。观察开发板上 LED 的运行效果红色 LED 常亮、绿色 LED 会周期性闪烁。串口打印与 LED 效果均可在 applications/main.c 中找到实现默认非 DM 模式下main函数通过rt_pin_mode/rt_pin_write控制红色 LEDGET_PIN(F, 12)以 500ms 周期翻转而INIT_BOARD_EXPORT等初始化机制会自动完成系统启动。连接开发板对应串口到 PC在终端工具里打开相应的串口115200-8-1-N复位设备后可以看到 RT-Thread 的输出信息\ | / - RT - Thread Operating System / | \ 5.0.1 build Jul 4 2023 07:49:10 2006 - 2022 Copyright by RT-Thread team msh 出现msh 提示符即代表系统已正常运行可以输入help等命令体验 FinSH 控制台。4.2 进阶使用此 BSP 默认只开启了 GPIO 和串口 1 的功能。如果需使用 SD 卡、Flash 等更多高级功能需要利用 ENV 工具对 BSP 进行配置步骤如下在 bsp 目录下打开 ENV 工具输入menuconfig命令配置工程配置好之后保存退出输入pkgs --update命令更新软件包输入scons --targetmdk5/iar命令重新生成工程。本章节更详细的介绍请参考 STM32 系列 BSP 外设驱动使用教程。4.3 进阶外设实操要点以 SPI Flash 为例开启BSP_USING_SPI_FLASHKconfig 中自动select BSP_USING_SPI、BSP_USING_SPI2、RT_USING_SFUD后board/ports/spi_flash_init.c 中的rt_hw_spi_flash_init会通过rt_hw_spi_device_attach(spi2, spi20, GET_PIN(B, 12))将 SPI2 总线挂载到 PB12 片选再用rt_sfud_flash_probe(W25Q64, spi20)注册为 SFUD 设备并通过INIT_COMPONENT_EXPORT在组件初始化阶段自动执行。若同时开启 FALBSP_USING_FALboard/ports/fal/fal_cfg.h 定义了完整的分区表片内 flashonchip_flash_128k划分出app0384KB与param384KB 起分区外部 W25Q64 划分出easyflash、download、wifi_image、font、filesystem等分区开启BSP_USING_BOOTLOADER后分区表会自动切换为 bootloader/app 布局方便配合 OTA 升级。5. 启用设备模型DM本 BSP 通过RT_USING_DM在设备模型驱动和传统 BSP 驱动之间进行选择。启用 DM 后GPIO 和 EXTI 使用设备树描述传统的 STM32 GPIO 驱动不会参与构建。操作步骤在当前 BSP 目录执行scons --menuconfig进入Device Drivers选中Enable device driver model with device tree保存配置后执行scons -jN构建 GCC 工程。5.1 DM 模式的源码级机制从 Kconfig 可以看到RT_USING_DM一旦开启会自动为SOC_STM32F407ZG追加RT_USING_OFW、RT_USING_BUILTIN_FDT、RT_USING_PIC、RT_PIC_ARM_NVIC、RT_USING_PIN等配置并将RT_BUILTIN_FDT_PATH默认指向board/dts/stm32f407-rt-spark.dtb——构建过程会自动编译设备树源文件并生成、嵌入 DTB。设备树源文件 board/dts/stm32f407-rt-spark.dts 声明了stm32f407zg兼容性、Cortex-M4 CPU 节点、NVIC 中断控制器82 个中断、4 位优先级以及 EXTI 控制器32 条线映射到 line0line15 中断向量并为 GPIOAGPIOI 九个端口分别注册了st,stm32-gpio节点与基地址如 GPIOA 位于0x40020000。开启 DM 后applications/main.c 中 LED 点灯逻辑改为空循环由设备树与 PIN 框架接管引脚管理开发者可基于 OFW/FDT 方式描述并访问外设。6. 注意事项与维护信息注意事项目前无已知注意事项。维护人Supperthomas。该 BSP 完整工程文件project.uvprojx、project.ewp/eww、SConstruct/SConscript、rtconfig.h/rtconfig.py均位于 bsp/stm32/stm32f407-rt-spark 目录读者可结合本文内容在本地直接打开工程验证运行效果。赞分享操作系统嵌入式物联网嵌入式OSRTOS【免费下载链接】rt-threadRT-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点击查看免费下载相关推荐QMK Firmware 2020 年 11 月 28 日 Breaking Change 发布说明键盘迁移、核心新特性与构建流程解读QMK Firmware 2020 年 11 月 28 日 Breaking Change 发布说明键盘迁移、核心新特性与构建流程解读 QMK Firmwar操作系统嵌入式物联网嵌入式OSRTOSWasp 页面与路由Pages Routes入门用 route 与 page 声明构建 React 应用导航Wasp 页面与路由Pages Routes入门用 route 与 page 声明构建 React 应用导航 在 Wasp 中页面与路由的声明式配置操作系统嵌入式物联网嵌入式OSRTOSRT-Thread STM32F411 BlackPillWeActBSP 快速上手与外设驱动开发指南RT Thread STM32F411 BlackPillWeActBSP 快速上手与外设驱动开发指南 本指南以 RT Thread 官方仓库中 bsp/s操作系统嵌入式物联网嵌入式OSRTOS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

HTML+CSS+JS响应式网页源码实战避坑指南
HTML+CSS+JS响应式网页源码实战避坑指南

简介:这是一份面向Web前端初学者与中级开发者的意大利风味餐厅主题响应式网站HTML源码,适用于课程设计、毕业项目或小型商业站点快速搭建。资源采用纯HTML5CSS3JavaScript实现,无需后端依赖,完整呈现餐厅介绍、菜单展示、在线预约… · 2026/9/26 12:00:36

高校电动车租赁系统SpringBoot+Vue+MySQL全栈实战详解
高校电动车租赁系统SpringBoot+Vue+MySQL全栈实战详解

做课程设计或者毕业设计那会儿,很多人最头疼的就是选题和“怎么把一套完整系统跑起来”。高校电动车租赁系统信息管理系统属于那种看着不起眼、实际做起来非常有价值的全栈项目——业务场景清晰、需求边界明确、难度正好卡在“能完整落地”和“不会简单到没东西写”… · 2026/9/26 12:00:36

Notepad++安装包深度解析:编码、插件与静默部署实战
Notepad++安装包深度解析:编码、插件与静默部署实战

简介:本资源为Notepad 7.5.8官方安装包(ZIP格式,13.2MB),集成插件管理器及Emeet协作插件,面向Windows平台程序员、Web开发者及远程协作团队,解决轻量级代码编辑、多语言语法支持与实时协同开发需… · 2026/9/26 12:00:23

GitHub日榜项目实战:从发现到跑起来的完整指南
GitHub日榜项目实战:从发现到跑起来的完整指南

1. GitHub 日榜项目到底在榜什么:从标题拆解到价值判断1.1 日榜项目的本质与信息差GitHub 热榜项目日榜,说白了就是每天按新增 star 数、fork 数、issue 活跃度等指标综合排序出来的项目列表。很多人第一次接触这个榜单,会觉得它就是个“今天… · 2026/9/26 12:30:09

Android开机logo制作:从内核initlogo.rle到bootanimation.zip的完整配置与验证
Android开机logo制作:从内核initlogo.rle到bootanimation.zip的完整配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 12:30:09

Apache Doris + MCP:Agent时代实时数据分析的黄金组合(技术解析+实战案例)
Apache Doris + MCP:Agent时代实时数据分析的黄金组合(技术解析+实战案例)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 12:30:09

技术驱动与价值共生:Lerwee 2026 Roadmap背后的物联网趋势解析
技术驱动与价值共生:Lerwee 2026 Roadmap背后的物联网趋势解析

上周看完Lerwee 2026产品Roadmap对外发布的消息,我第一反应不是去看它又更新了几个SKU,而是去翻这个时间节点背后整个连接技术行业的走势。原因很简单:做产品选型或者做技术预研的人,看Roadmap看的不应该是“厂商明年出什么”&… · 2026/9/26 12:30:02

PostgreSQL 17浮点类型选型指南:real、double precision与numeric精度对比与避坑实践
PostgreSQL 17浮点类型选型指南:real、double precision与numeric精度对比与避坑实践

直接在开头讲结论:PostgreSQL 17 里的浮点类型,选错一次,数据多一点,线上就可能会对不上账。哪怕你平时让豆包这类AI助手帮你写SQL、翻译语法,真到建表选型和精度排查的时候,还是得自己心里有数。这篇文章我… · 2026/9/26 12:30:02

MySQL函数全解析:单行函数与聚合函数的原理、应用及性能优化
MySQL函数全解析:单行函数与聚合函数的原理、应用及性能优化

1. 先把函数的家底摸清楚:单行函数和聚合函数的分野1.1 为什么我们的SQL里离不开函数上个月帮业务部门整理一份用户留存报表,卡在一个很不起眼的环节上:注册时间字段是 datetime 类型,长这样2024-03-15 10:24:11,但运营… · 2026/9/26 12:30:02

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码