RT-Thread 在 WeAct Studio STM32H7xx Core Board 上的 BSP 使用指南:快速上手与板载资源驱动
发布时间:2026/9/28 12:55:47 锦皓数字建站

操作系统嵌入式物联网嵌入式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点击查看免费下载本文档是 WeAct Studio STM32H7xx Core Board 开发板芯片 STM32H750VBT6Cortex-M7 内核的 RT-Thread BSP板级支持包实战指南。文章以该 BSP 的 README 为骨架完整讲解开发板资源、外设支持现状、MDK5/IAR/GCC 编译下载流程、ENV 工具进阶配置方法并结合本仓库 BSP 源码深入说明时钟树、内存堆、SPI/QSPI Flash 与文件系统等底层实现。读完本文你将能够在几分钟内把 RT-Thread 5.0 系统跑在这块核心板上并掌握用 menuconfig 打开 SPI Flash、TFT-LCD、QSPI Flash 等板载外设的完整方法。开发板资源介绍WeAct Studio STM32H7xx Core Board 是一块基于 ARM Cortex-M7 内核的紧凑型核心板主控为 STM32H750VBT6本 BSP 的Kconfig中通过SOC_STM32H750VBT6声明并归属于SOC_SERIES_STM32H7系列。其核心硬件特性如下最高主频480 MHz板载 25 MHz 晶振经 PLL 倍频详见下文时钟树配置128 KB片上 ROM实际2 MB可用的 FlashBSP 根目录下提供了STM32H7x_2048.FLM下载算法以充分利用1 MBRAM含 AXI SRAM 与多块 D2 域 SRAM见下文内存堆初始化外接8 MB SPI FlashW25Q64JV挂接 SPI1与8 MB QSPI FlashW25Q64挂接 QSPI开发板提供的按键和接口接口数量/规格2.54mm I/O 排针2 × 22 Pin2.54mm SW 调试接口1 × 4 PinUSB Type-C× 1MicroSD TF 卡座× 18Bit DCMI 摄像头接口× 1User Key K1PC13× 1NRST 复位按键× 1BOOT0 按键× 1开发板外观如上图所示。开发板的更多硬件细节可参考 WeAct Studio 官方资料本 BSP 目录下的 README.md 即该 BSP 的权威说明。外设支持情况本 BSP 对外设的支持情况以 README 中的外设支持表为准整理如下板载外设板载外设支持情况备注0.96 ST7735 TFT支持SPI1TF Card待支持SPI Flash支持W25Q64JV、Littlefs、SPI1QSPI Flash待支持W25Q64JV、LittlefsOV7670 Camera待支持OV2640 Camera待支持OV7725 Camera待支持OV5640-AF Camera待支持片上外设片上外设支持情况备注GPIO支持UART支持USART1SPI支持SPI1、SPI4USB Device待支持USB HS从源码角度进一步印证默认 rtconfig.h 中已开启BSP_USING_GPIO、BSP_USING_UART、BSP_USING_UART1、BSP_USING_SPI、BSP_USING_SPI1、BSP_USING_SPI4、BSP_USING_PWM、BSP_USING_QSPI以及板载的BSP_USING_QSPI_FLASH、BSP_USING_LCD_SPITF 卡对应的 SDIO、USB Device 等则在 board/Kconfig 中提供配置项默认关闭可参考进阶使用章节开启。快速上手把 RT-Thread 跑起来本 BSP 同时提供MDK5project.uvprojx和IARproject.ewp工程并支持GCC开发环境。下面以 MDK5 为例介绍完整流程。第一步更新软件包必做请注意在执行编译工作前必须先在 BSP 目录下打开ENV工具并执行以下指令该指令用于拉取必要的 STM32H7 HAL 库与 CMSIS 库否则工程无法通过编译pkgs --update这一步对应 rtconfig.h 中PKG_USING_STM32H7_HAL_DRIVER、PKG_USING_STM32H7_CMSIS_DRIVER与PKG_USING_CMSIS_CORE等软件包配置——HAL 与 CMSIS 均以 RT-Thread 软件包形式按需拉取。第二步硬件连接使用数据线将开发板连接到 PCUSB Type-C 接口。使用USB 转串口工具连接调试串口PB14USART1_TX与PB15USART1_RX共地后接入 PC。调试串口引脚映射README注意事项章节再次强调PB14 ------ USART1_TX PB15 ------ USART1_RX第三步编译下载双击 project.uvprojx 打开 MDK5 工程编译并下载程序到开发板。下载烧录方法可参考 WeAct Studio 官方提供的 STM32 下载教程注意如需使用板载 Flash需要按官方指引添加对应的 Flash 支持下载算法文件详见注意事项章节。第四步运行结果下载程序成功后系统自动运行板上 LED 开始闪烁LED 由applications/main.c中的主线程控制见下文默认应用与 LED 闪烁。连接开发板串口到 PC在终端工具中打开对应串口参数115200-8-1-N复位设备后即可看到 RT-Thread 的启动信息与 msh 命令行\ | / - RT - Thread Operating System / | \ 5.0.0 build Oct 15 2022 16:28:21 2006 - 2022 Copyright by RT-Thread team msh /出现msh /提示符即表示 RT-Thread 已在开发板上成功运行。默认应用与 LED 闪烁BSP 的应用入口位于 applications/main.c。默认示例将PE3定义为 LED0 引脚/* defined the LED0 pin: PE3 */ #define LED0_PIN GET_PIN(E, 3) int main(void) { int count 1; /* set LED0 pin mode to output */ rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT); while (count) { rt_pin_write(LED0_PIN, PIN_HIGH); rt_thread_mdelay(500); rt_pin_write(LED0_PIN, PIN_LOW); rt_thread_mdelay(500); } return RT_EOK; }该示例演示了 RT-Thread 引脚设备框架rt_pin_mode/rt_pin_write与线程延时rt_thread_mdelay的基本用法主线程每 500 ms 翻转一次 LED 电平形成 1 Hz 闪烁。这也是验证系统已跑起来的最直观现象。进阶使用用 ENV 开启更多板载外设此 BSP 默认只开启了 GPIO、UART1 以及部分 SPI/QSPI 相关功能。如需使用 TFT-LCD、QSPI Flash 等更多板载资源需要利用ENV 工具对 BSP 进行配置步骤如下在 BSP 目录下打开 ENV 工具。输入menuconfig命令配置工程配置好之后保存退出。输入pkgs --update命令更新软件包。输入scons --targetmdk4/mdk5/iar命令重新生成工程按你的工具链选择 mdk4、mdk5 或 iar。本章节更详细的介绍请参考 STM32 系列 BSP 外设驱动使用教程。menuconfig 中的外设配置项本 BSP 的外设配置全部集中在 board/Kconfig分为Onboard Peripheral Drivers板载外设与On-chip Peripheral Drivers片上外设两组菜单主要配置项如下配置项含义默认值BSP_USING_SPI_FLASH开启板载 SPI FlashW25Q64SPI1自动连带开启 SFUD、FAL、MTD NOR 与 LittleFS 文件系统nBSP_USING_QSPI_FLASH开启 QSPI FlashW25Q64连带开启 QSPI 总线与 SFUD QSPI 模式nBSP_USING_LCD_SPI开启 0.96 ST7735S TFT-LCD连带开启 SPI4、PWM背光可选nLCD_BACKLIGHT_USING_PWM/LCD_BACKLIGHT_USING_GPIOLCD 背光方式选择TIM1_CH2 PWM 或 GPIOPE10GPIOBSP_USING_GPIO开启 GPIO依赖 RT-Thread PIN 设备框架yBSP_USING_UART/BSP_USING_UART1开启 UART 与 USART1可进一步配置 RX/TX DMA、收发缓冲大小yBSP_UART1_RX_BUFSIZE/BSP_UART1_TX_BUFSIZEUART1 RX/TX 缓冲大小64~65535默认 256/0256/0BSP_USING_SPI/BSP_USING_SPI1/BSP_USING_SPI4开启 SPI 总线及 SPI1、SPI4nBSP_USING_QSPI开启 QSPI 总线nBSP_USING_SOFT_I2C软件 I2C 总线swi2cSCL 默认引脚 135、SDA 默认引脚 95nBSP_USING_PWM/BSP_USING_PWM1定时器 1 输出 PWM可选 CH1~CH4nBSP_USING_ADC/BSP_USING_ADC1~3ADC1/2/3nBSP_USING_ON_CHIP_FLASH片上 Flash配合 FAL 使用见 fal_cfg.hnBSP_USING_SDIOSDIO配合 DFS 文件系统用于 TF 卡nBSP_USING_USBDOTG HS 作为 USB DeviceHS ULPI PHYn例如要使用板载 SPI Flash只需在menuconfig中勾选BSP_USING_SPI_FLASHKconfig 会自动连带选中 SPI1、SFUD、FAL、MTD NOR、LittleFS 等依赖项重新生成工程后编译下载即可。已启用外设的默认配置参考本仓库中 rtconfig.h 记录了当前 BSP 已生效的完整配置可作为配置参考其中包括内核32 优先级、1 ms tick、信号量/互斥量/事件/邮箱/消息队列等 IPC、msh/finsh 命令行FINSH_CMD_SIZE80、历史记录 5 行、DFS 文件系统DFS_FD_MAX16、devfs、FALFAL_USING_NOR_FLASH_DEV_NAME norflash0、以及上文外设表对应的各驱动宏。配置方式均为通过 ENV 的menuconfig可视化修改后保存。源码级剖析时钟、内存与 Flash 底层实现时钟树配置480 MHz 主频从何而来board/board.c 中的SystemClock_Config()完成了系统时钟初始化选用HSE外部高速晶振作为 PLL 时钟源同时开启 LSE外部低速晶振用于 RTCPLL 参数PLLM 5、PLLN 192、PLLP 2即25 MHz / 5 × 192 / 2 480 MHz配置PWR_REGULATOR_VOLTAGE_SCALE0电压等级以满足高频运行需求SYSCLK 不分频RCC_SYSCLK_DIV1AHB 总线RCC_HCLK_DIV2240 MHzAPB1/APB2/APB3/APB4 均二分频外设时钟分别选择USART1 时钟源RCC_USART16CLKSOURCE_D2PCLK2RTC 时钟源 LSE。内存堆初始化充分利用 1 MB RAMSTM32H750 的 RAM 分布于多块物理内存board.c中的init_sram()通过INIT_BOARD_EXPORT在板级初始化阶段自动执行为每块内存建立了独立的 RT-Thread memheap 堆堆名称起始地址大小axi_sram0x24000000512 KBsram10x30000000128 KBsram20x30020000128 KBsram30x3004000032 KBsram40x3800000064 KBbak_sram0x388000004 KB并通过__HAL_RCC_D2SRAM1/2/3_CLK_ENABLE()使能 D2 域 SRAM 时钟。此外board.c还预留了 OTA 应用向量表重映射函数ota_app_vtor_reconfig()将 VTOR 指向0x08020000当前默认注释未启用为后续 bootloader app 的 OTA 方案留好了扩展点。SPI Flash 驱动与 LittleFS 挂载板载 SPI Flash 的驱动位于 board/port/drv_spi_flash.c调用链如下rt_hw_spi_device_attach(spi1, spi10, GET_PIN(D, 6))将 SPI1 总线挂载为设备spi10片选引脚为PD6rt_sfud_flash_probe(norflash0, spi10)通过 SFUD串行 Flash 通用驱动库探测 W25Q64JV 并注册为块设备INIT_DEVICE_EXPORT自动初始化mnt()函数INIT_ENV_EXPORT执行fal_init()基于 FAL 分区表创建 MTD NOR 设备再以LittleFS格式挂载到根目录/若首次使用未格式化则自动执行dfs_mkfs(lfs, ...)格式化后挂载。与之配套的分区表定义在 board/port/fal_cfg.h#define FAL_PART_TABLE \ { \ {FAL_PART_MAGIC_WORD, bootloader, onchip_flash_128k, 0, 128*1024, 0}, \ {FAL_PART_MAGIC_WORD, filesystem, FAL_USING_NOR_FLASH_DEV_NAME, 0, 8*1024*1024, 0}, \ {FAL_PART_MAGIC_WORD, fs_qspi, W25Q64_q, 0, 8*1024*1024, 0}, \ }该表规划了三个分区片上 Flash 的bootloader128 KB、SPI Flash 上的filesystem8 MB、QSPI Flash 上的fs_qspi8 MB。SPI Flash 上电后即被格式化为 LittleFS 并挂载为根文件系统可在 msh 中使用文件系统命令进行读写。QSPI Flash 驱动与 QSPI 模式切换QSPI Flash 驱动位于 board/port/drv_qspi_flash.c受BSP_USING_QSPI_FLASH宏控制。它实现了标准的 FAL Flash 设备接口init/read/write/eraseFlash 设备名为W25Q64_q容量 8 MB、块大小 4096 字节初始化时从 SFUD 芯片信息中动态更新。驱动中还实现了 W25Q64 进入 QSPI 模式的完整流程w25qxx_read_status_register2()通过指令0x35读取状态寄存器 2w25qxx_write_enable()发送写使能指令0x06w25qxx_enter_qspi_mode()则通过写状态寄存器 2指令0x31置位 QE 位后发送0x38指令进入 QSPI 模式。初始化时通过rt_hw_qspi_device_attach(qspi1, qspi10, RT_NULL, 4, w25qxx_enter_qspi_mode, RT_NULL)将 QSPI 设备接入 SFUD 框架。TFT-LCD 驱动TFT-LCDST7735S相关驱动位于 board/port 目录st7735.c、drv_lcd_spi.c、lcd_port.h等底层依赖 SPI4 总线背光可选择 TIM1_CH2 PWM 或 PE10 GPIO具体在 menuconfig 的LCD_BACKLIGHT_SEL选项中切换。注意事项固件超过 128 KB 时的 Keil 下载问题STM32H750 的片上 Flash 名义为 128 KB但实际芯片具备 2 MB 可用空间。如果固件超过 128 KB且使用 Keil 下载请注意在 Keil 中将芯片型号选为H743此时 Keil 会出现2 MB Flash 的下载算法选择该下载算法下载程序将本 BSP 目录下的 STM32H7x_2048.FLM 拷贝到Keil安装目录\Keil_v5\ARM\Flash目录中并在工程里选择此下载算法其余下载方式IAR、GCC/OpenOCD 等处理方式类似均需使用覆盖 2 MB 地址空间的下载配置。调试串口引脚映射调试串口为 USART1引脚映射关系如下硬件连接时必须与此对应PB14 ------ USART1_TX PB15 ------ USART1_RX小结本文完整覆盖了 WeAct Studio STM32H7xx Core Board BSP 的从零上手到进阶配置全过程先介绍了开发板的硬件资源与外设支持矩阵再按更新软件包 → 硬件连接 → 编译下载 → 验证运行结果四个步骤完成了 RT-Thread 5.0 的首跑随后通过 ENV 的 menuconfig 展示了开启 SPI Flash、TFT-LCD、QSPI Flash 等板载外设的配置方法最后结合 board.c、drv_spi_flash.c、drv_qspi_flash.c 与 fal_cfg.h 等源码剖析了 480 MHz 时钟树、多块 SRAM memheap、SFUDFALLittleFS 文件系统挂载及 QSPI 模式切换等底层实现。需要更深入的外设驱动开发细节时可继续阅读 STM32 系列 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 STM32F411 BlackPillWeActBSP 快速上手与外设驱动开发指南RT Thread STM32F411 BlackPillWeActBSP 快速上手与外设驱动开发指南 本指南以 RT Thread 官方仓库中 bsp/s操作系统嵌入式物联网嵌入式OSRTOSRT-Thread BSP 实战APM32F103ZE MINI BOARD 开发板快速上手与驱动配置指南RT Thread BSP 实战APM32F103ZE MINI BOARD 开发板快速上手与驱动配置指南 本指南围绕 RT Thread 仓库中 bsp/a操作系统嵌入式物联网嵌入式OSRTOS基于 RT-Thread 的 APM32F103VB MINI BOARD BSP 快速上手与驱动实践指南基于 RT Thread 的 APM32F103VB MINI BOARD BSP 快速上手与驱动实践指南 APM32F103VB MINI BOARD 是极海操作系统嵌入式物联网嵌入式OSRTOS上一篇Sunshine 游戏串流完整指南从安装配对到首次串流下一篇Apitest 使用指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。