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),仅供参考