news 2026/9/28 2:38:27

RT-Thread 之 STM32H750-armfly-h7-tool BSP 实践:从快速上手到外设驱动深度配置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RT-Thread 之 STM32H750-armfly-h7-tool 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
点击查看免费下载

本篇技术指南以 RT-Thread 仓库中 bsp/stm32/stm32h750-armfly-h7-tool/README.md 为骨架,围绕安富莱 H7-TOOL 开发板的 BSP(板级支持包)展开:先带你通过 MDK5/IAR/GCC 将 RT-Thread 系统在 STM32H750 上跑起来,再深入 ENV + menuconfig 的外设配置流程,最后结合 BSP 源码剖析其 400MHz 时钟树、内存布局与 OTA 向量表重定位等底层细节。读完本文,你将具备该开发板的完整上手能力,并掌握从"点灯"到"按需开启 ESP32、以太网、QSPI Flash、USB 等外设"的进阶方法。

开发板与 BSP 概览

STM32H750-armfly-h7-tool(简称 H7-TOOL)是安富莱推出的一款基于 ARM Cortex-M7 内核的开发板,最高主频 400MHz。该 BSP 由 zylx 维护,是一套完整的 RT-Thread 板级支持包,包含应用层、板级初始化、链接脚本以及 MDK5 / IAR / GCC 三套构建工程:

  • 应用层入口:applications/main.c
  • 板级初始化:board/board.c(时钟、堆内存等)
  • 外设配置菜单:board/Kconfig
  • 构建工程:project.uvprojx(MDK5)、project.ewp(IAR)、SConstruct/SConscript(GCC/SCons)

开发板外观如下图所示:

该开发板的常用板载资源如下:

  • MCU:STM32H750,主频 400MHz,2MB FLASH、1MB RAM;
  • 常用接口:USB 转串口、以太网接口、DAC 接口、电流检测接口等;
  • 调试接口:标准 SWD。

注:原文档指向的 H7-TOOL 开发工具论坛帖子属外部链接,此处不再重复给出;开发板的更多硬件细节可查阅安富莱官方资料。

BSP 外设支持矩阵

根据原 BSP 说明,当前该 BSP 对外设的支持情况如下:

板载外设支持情况备注
LCD待支持
ESP32支持AT 固件
片上外设支持情况备注
GPIO支持
UART支持UART1
USB Device支持USB HS

从 board/Kconfig 的配置项看,该 BSP 实际预留的可扩展外设远不止上表所列,包括:QSPI Flash(W25Q256)、以太网(LAN8720A PHY)、LCD、ESP32(UART4 + AT 组件)、软件 I2C、PWM、ADC、SDIO 以及 OTG HS USB 设备等,均可通过 menuconfig 按需开启(详见"进阶使用"章节)。

快速上手:让 RT-Thread 在 H7-TOOL 上跑起来

本 BSP 为开发者提供MDK5和IAR工程,并支持GCC开发环境。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。

第 0 步:务必先拉取 HAL 库与 CMSIS 库(重要)

在执行编译工作前,请先打开 ENV 执行以下指令,该指令用于拉取必要的 HAL 库及 CMSIS 库,否则无法通过编译:

pkgs --update

这一要求与仓库实际依赖完全吻合:查看 rtconfig.h 可以看到,BSP 通过软件包引入PKG_USING_STM32H7_HAL_DRIVER(STM32H7 HAL 驱动)与PKG_USING_CMSIS_CORE(CMSIS Core),这些包必须经过pkgs --update从软件包索引下载到本地packages目录后,构建脚本才能找到对应头文件与源码。

硬件连接

使用数据线连接开发板到 PC,将TVCC接到3.3V;使用 USB 转串口工具连接TTLRX和TTLTX两个引脚。

编译下载

双击 project.uvprojx 打开 MDK5 工程,编译并下载程序到开发板。

工程默认配置使用 ST_LINK 仿真器下载程序:在通过 ST_LINK 连接开发板的基础上,点击下载按钮即可将程序下载到开发板。如需改用其他下载器(如 DAP-Link、J-Link),可在 MDK 的 Debug 选项里切换调试器并配置对应的下载算法。

运行结果

下载程序成功后,系统会自动运行,开发板上的 LED 开始闪烁。该逻辑实现在 applications/main.c 中:

/* defined the LED0 pin: PI8 */ #define LED0_PIN GET_PIN(I, 8) int main(void) { /* set LED0 pin mode to output */ rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT); while (1) { rt_pin_write(LED0_PIN, PIN_HIGH); rt_thread_mdelay(500); rt_pin_write(LED0_PIN, PIN_LOW); rt_thread_mdelay(500); } }

即默认示例通过 RT-Thread 的 PIN 设备框架将PI8配置为推挽输出,以 500ms 周期翻转电平实现 LED 闪烁——这同时验证了 BSP 的 GPIO 驱动与内核调度都已正常工作。

连接开发板对应串口到 PC,在终端工具中打开相应串口(115200-8-1-N),复位设备后可以看到 RT-Thread 的输出信息:

\ | / - RT - Thread Operating System / | \ 4.0.2 build Oct 25 2019 2006 - 2019 Copyright by rt-thread team msh >

出现msh >提示符即表示系统已正常运行,此时即可在命令行里交互操作(查看线程、内存、设备等 finsh/msh 命令)。

进阶使用:基于 menuconfig 开启更多板载外设

此 BSP 默认只开启了 GPIO 和串口 1 的功能(查看 rtconfig.h 可见默认使能BSP_USING_GPIO、BSP_USING_UART1与BSP_USING_UART4)。如需使用更多高级功能,需要利用 ENV 工具对 BSP 进行配置,步骤如下:

  1. 在 bsp 目录下打开 ENV 工具;
  2. 输入menuconfig命令配置工程,配置好后保存退出;
  3. 输入pkgs --update命令更新软件包;
  4. 输入scons --target=mdk4/mdk5/iar命令重新生成工程(按需选择目标,本 BSP 主要使用 mdk5/iar)。

之后重新打开生成的工程编译下载即可。整个配置流程对应的菜单项定义在 board/Kconfig 中,下面结合该文件逐项说明。

板载外设配置(Onboard Peripheral Drivers)

菜单项Kconfig 选项开启后自动关联说明
QSPI FLASH (W25Q256)BSP_USING_QSPI_FLASHQSPI 总线、SFUD 组件板载 32MB SPI NOR Flash,用于文件系统/固件存储
EthernetBSP_USING_ETHlwIP、PHY_USING_LAN8720A板载以太网,PHY 为 LAN8720A
LCDBSP_USING_LCDPWM(背光)当前 BSP 文档标记为"待支持"
ESP32BSP_USING_ESP32UART4、AT 组件、AT 客户端、Socket、AT_DEVICE_USING_ESP32板载 ESP32 模块,运行 AT 固件,用于 Wi-Fi 联网

其中 ESP32 选项值得展开:开启后会通过 UART4 与 ESP32 模块通信,并引入PKG_USING_AT_DEVICE软件包,开发者即可在 RT-Thread 中直接使用标准 socket 接口联网,而无需关心 AT 指令细节。

片上外设配置(On-chip Peripheral Drivers)

  • GPIO(BSP_USING_GPIO,默认开启):提供rt_pin_*接口,对应 RT-Thread PIN 设备框架。
  • UART(BSP_USING_UART,默认开启):默认使能 UART1 与 UART4,每个串口均可独立配置:
    • BSP_UART1_RX_USING_DMA/BSP_UART1_TX_USING_DMA:接收/发送 DMA(需要RT_SERIAL_USING_DMA,默认关闭);
    • BSP_UARTx_RX_BUFSIZE:接收缓冲区大小,范围 64~65535,默认 256;
    • BSP_UARTx_TX_BUFSIZE:发送缓冲区大小,范围 0~65535,默认 0;
    • BSP_UARTx_DMA_PING_BUFSIZE:DMA 乒乓缓冲大小,范围 32~65535,默认 64(需开启 RX DMA)。
  • QSPI 总线(BSP_USING_QSPI):供 W25Q256 等 QSPI Flash 使用,可另开BSP_QSPI_USING_DMA提升读写吞吐。
  • 软件 I2C(BSP_USING_SOFT_I2C1):默认 SCL = 135、SDA = 95,对应RT_SOFT_I2C1_SCL_PIN/RT_SOFT_I2C1_SDA_PIN两个可调配置项。
  • PWM(BSP_USING_PWM2_CH2):定时器 2 输出 PWM,可用于 LCD 背光等场景。
  • ADC(BSP_USING_ADC1/2/3):配合板上电流检测、DAC 接口使用。
  • SDIO(BSP_USING_SDIO):开启后会同时引入RT_USING_DFS文件系统组件,用于读写 SD 卡。
  • USB Device(BSP_USING_USBD):将 OTG HS 配置为 USB 设备(HS 速度、ULPI 外部 PHY 方案),即文档中"USB Device 支持,USB HS"的对应配置。

配置并重新生成工程后,对应驱动会由libraries/HAL_Drivers自动纳入编译(见 board/Kconfig 末尾source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig")。

进阶章节更详细的介绍请参考 STM32 系列 BSP 外设驱动使用教程。

源码视角:时钟、内存布局与启动细节

400MHz 主频的时钟树配置

board/board.c 中的SystemClock_Config()完整配置了 H7 复杂的时钟树:

  • 电源与电压档位:PWR_LDO_SUPPLY+PWR_REGULATOR_VOLTAGE_SCALE1(VOS1 档,支撑 400MHz 高频);
  • PLL 主锁相环:PLLM=5, PLLN=160, PLLP=2,从配置数值可以推断其设计目标是让 SYSCLK 达到400MHz(VCO 输出经 PLLP 二分频后供内核,配合RCC_SYSCLK_DIV1、HCLKDIV2等分频器,AHB/APB 总线按需降频);
  • 外设时钟:独立配置了 PLL2(供 ADC、QSPI 等)、UART1/UART4(D2PCLK源)、RNG(HSI48 源)、SDMMC 等外设时钟选择。

内存与 Flash 布局:为 Bootloader/OTA 预留空间

board/board.h 中定义了本 BSP 的内存视图:

#define STM32_FLASH_START_ADRESS ((uint32_t)0x08020000) #define STM32_FLASH_SIZE (1920 * 1024) #define STM32_FLASH_END_ADDRESS ((uint32_t)(STM32_FLASH_START_ADRESS + STM32_FLASH_SIZE)) #define STM32_SRAM_SIZE (128) #define STM32_SRAM_END (0x20000000 + STM32_SRAM_SIZE * 1024)

值得注意:Flash 起始地址为0x08020000(而非 0x08000000),即预留了前 128KB 给 Bootloader/OTA 升级程序;BSP 使用的 Flash 空间为起始地址后的 1920KB。这与 board/board.c 中自动执行的向量表重定位逻辑完全对应:

static int ota_app_vtor_reconfig(void) { #define RT_APP_PART_ADDR 0x08020000 #define NVIC_VTOR_MASK 0x3FFFFF80 /* Set the Vector Table base location by user application firmware definition */ SCB->VTOR = RT_APP_PART_ADDR & NVIC_VTOR_MASK; return 0; } INIT_BOARD_EXPORT(ota_app_vtor_reconfig);

该函数通过INIT_BOARD_EXPORT在板级初始化阶段自动注册执行:应用启动后将 Cortex-M7 的中断向量表(VTOR)重定位到 0x08020000,确保中断能够正确分发。由此可以看出,此 BSP 从一开始就是按"Bootloader + 应用"双分区结构设计的,可直接支持后续的 OTA 升级方案。

此外,堆内存(HEAP)的起点HEAP_BEGIN针对 MDK(Image$$RW_IRAM1$$ZI$$Limit)、IAR(CSTACK段末尾)与 GCC(__bss_end)三种工具链分别做了适配,堆末尾HEAP_END指向 128KB SRAM 的顶端,配合RT_USING_SMALL_MEM_AS_HEAP为内核与组件提供动态内存。

工具链与构建参数

rtconfig.py 中针对三种工具链分别给出了编译参数:

  • GCC:-mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard,链接脚本为board/linker_scripts/link.lds,产物经 objcopy 生成rtthread.bin;
  • MDK (armcc):--cpu Cortex-M7.fp.sp,散射文件board/linker_scripts/link.sct;
  • IAR (iccarm):--cpu=Cortex-M7+--fpu=VFPv5_sp,配置文件board/linker_scripts/link.icf。

BSP 在 board/SConscript 中通过CPPDEFINES = ['STM32H750xx']指定芯片型号,并将board.c与 CubeMX 生成的stm32h7xx_hal_msp.c纳入编译。

注意事项:调试串口映射

BSP 默认的调试串口为串口 1(RT_CONSOLE_DEVICE_NAME "uart1"),引脚映射如下:

PA10 ------> USART1_RX PA9 ------> USART1_TX

连接终端时请按115200-8-1-N参数打开串口,并注意与 USB 转串口工具的 TTLRX / TTLTX 交叉连接。

维护信息

该 BSP 由社区开发者 zylx 维护。如需反馈问题或提交改进,可在 RT-Thread 仓库的 bsp/stm32/stm32h750-armfly-h7-tool 目录下查看源码与文档,并结合 STM32 系列外设驱动添加指南 学习如何为新的板载外设编写驱动。

  • 操作系统
  • 嵌入式
  • 物联网
  • 嵌入式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
点击查看免费下载

相关推荐

上一篇:AWS CLI 实战:使用 update-repository-description 修改 CodeCommit 仓库描述
下一篇:Redux Thunk性能调优:从渲染到网络请求

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/28 2:38:29

揭秘jsp网站开发软件哪个好:3款工具实测与建站报价避坑指南

揭秘jsp网站开发软件哪个好:3款工具实测与建站报价避坑指南 网站做好了没人访问,这往往是后端逻辑没打通,或者前端渲染慢得让人想关页面。很多老板拿着【jsp网站开发软件哪个好】去问程序员,其实这问题问偏了。工具只是刀,手艺才是关键。选错开发环境,代码写得再漂亮,部署到服务器上也是一堆Bug。更坑的是…

作者头像 李华
网站建设 2026/9/28 2:38:28

免费的行情网站app入口免费工具推荐

3个免费行情App入口对比评测:告别丑模板,省钱又好用 还在为找不到的免费行情网站app入口发愁?是不是觉得那些模板网站太丑、功能又不够用,根本没法看?别急,今天咱们不聊虚的,直接上干货。…

作者头像 李华
网站建设 2026/9/28 2:38:13

JSP网站开发答辩避坑指南与建站报价揭秘

JSP网站开发答辩避坑指南与建站报价揭秘 网站被黑挂马不知道怎么办?别慌,先查代码再谈钱。很多新手在准备 jsp网站开发答辩 时,往往只盯着功能演示,却忽略了安全漏洞和成本逻辑,导致项目评分低,甚至在实际落地时因不懂 建站报价 构成而被外包公司坑得底掉。…

作者头像 李华
网站建设 2026/9/28 2:37:48

2026最新网站底部链接怎么做防注入实战指南

2026最新网站底部链接怎么做防注入实战指南 找建站公司怕被坑高价,这确实是很多独立站长的痛点。你以为只是加几个文字链接,结果对方报出一堆“动态交互费”“安全加固费”,最后发现代码里全是漏洞。2026最新的安全规范告诉我们,底部链接看似简单,却是SQL注入和XSS攻击的重灾区。很多站长忽略了这个细节…

作者头像 李华
网站建设 2026/9/28 2:37:20

容桂顺德网站建设:零基础从零搭建官网避坑全指南

容桂顺德网站建设:零基础从零搭建官网避坑全指南 不会代码想做网站?别慌,这事儿真没你想的那么难。 很多老板在容桂、顺德这边做生意,想做个官网挂上微信名片或者印在宣传册上,一打听开发费要好几万,心里就犯嘀咕。其实,如果你只是想展示产品、获取客户线索,完全不需要去学Python或Java,也不需要花大价…

作者头像 李华