☰
RT-Thread STM32G030-Tiny-Board BSP 开发指南:从快速上手到外设扩展
2026/9/27 7:16:04 网站建设 项目流程
  • 操作系统
  • 嵌入式
  • 物联网
  • 嵌入式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/stm32g030-tiny-board板级支持包(BSP)编写,面向希望将 RT-Thread 5.2.0 运行到 STM32G030C8T6 这颗 Arm Cortex-M0 内核 MCU 上的开发者。文章以官方 BSP 说明文档为主线,结合 BSP 目录下的源码、Kconfig 配置与构建脚本,完整覆盖开发板资源、外设支持现状、MDK5 快速上手指引、ENV 进阶配置流程、串口映射注意事项,并补充了 LED 点灯程序与时钟初始化等底层实现细节,帮助读者一步到位地把系统跑起来并逐步点亮更多板载外设。

开发板与 BSP 简介

stm32g030-tiny-board是 hywing 为 STM32g030-tiny-board 开发板提供的 RT-Thread BSP(板级支持包)。该开发板基于STM32G030C8T6芯片,属于 Arm Cortex-M0 内核,最高主频 64MHz,片上资源为64KB FLASH、8KB SRAM,同时提供标准 JTAG/SWD 调试接口,板载资源精简但足以充分发挥芯片性能。

开发板外观如下图所示:

围绕该芯片的内存布局,board/board.h 中定义了与硬件强相关的地址参数:FLASH 起始地址0x08000000、容量64 * 1024字节;内部 SRAM 容量定义为 8KB,堆区(HEAP)以__bss_end为起点、以STM32_SRAM_END(0x20000000 + 8 * 1024)为终点,RT-Thread 的动态内存分配即在此区间内工作。

外设支持情况

BSP 当前对外设的支持情况如下表所示:

板载外设支持情况备注
USB 转串口支持
片上外设支持情况备注
GPIO支持
UART支持UART1

从 BSP 的默认配置 rtconfig.h 可以看到,硬件驱动层面默认开启了BSP_USING_GPIO(依赖 RT-Thread 的RT_USING_PIN设备框架)与BSP_USING_UART/BSP_USING_UART1(依赖RT_USING_SERIAL),并且系统控制台设备被指定为uart1(RT_CONSOLE_DEVICE_NAME "uart1")。也就是说,上电后默认就能通过串口 1 看到 RT-Thread 的 MSH 命令行交互。

默认开启的功能相对精简,若要使用 ADC、I2C、SPI、PWM 等其他片上外设,需要按下文「进阶使用」章节通过 ENV 工具进行配置。

使用说明

使用说明分为「快速上手」与「进阶使用」两个章节:前者面向刚接触 RT-Thread 的新手,遵循简单步骤即可将 RT-Thread 运行起来并看到实验效果;后者面向需要驱动更多板载资源的开发者,通过 ENV 工具对 BSP 进行配置,开启更多高级功能。

快速上手

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

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

pkgs --update

这一步与 BSP 的构建机制直接相关:查看 BSP 根目录的 SConscript 可以发现,编译时会向工程注入STM32G030xx宏定义;而 STM32G0 的 HAL 驱动与 CMSIS 头文件并不随 BSP 源码直接分发,而是以软件包(package)的形式管理——默认配置中启用了PKG_USING_STM32G0_HAL_DRIVER、PKG_USING_STM32G0_CMSIS_DRIVER与PKG_USING_CMSIS_CORE(见 rtconfig.h)。因此首次构建前必须先运行pkgs --update把依赖包拉取到packages目录,否则头文件缺失会导致编译失败。

硬件连接

使用数据线连接开发板到 PC,打开电源开关。

编译下载

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

工程默认配置使用 ST_LINK 仿真器下载程序,在通过 ST_LINK 连接开发板的基础上,点击下载按钮即可下载程序到开发板。

工程文件(project.uvprojx)由 ENV/SCons 生成,因此如果在进阶使用中修改了配置,需要通过scons --target=mdk5重新生成工程后再编译下载。

运行结果

下载程序成功之后,系统会自动运行,LED 循环点亮。

连接开发板对应串口到 PC,在终端工具里打开相应的串口(115200-8-1-N,即波特率 115200、8 位数据位、1 位停止位、无校验),复位设备后,可以看到 RT-Thread 的输出信息:

\ | / - RT - Thread Operating System / | \ 5.2.0 build Dec 2 2024 11:35:30 2006 - 2024 Copyright by RT-Thread team msh >

当msh >提示符出现时,说明 RT-Thread 内核、finsh/MSH 组件已正常运行,可以在命令行中直接输入 RT-Thread 命令进行交互。注意输出中的版本号5.2.0与 rtconfig.h 中RT_VER_NUM 0x50300对应,代表内核版本 5.3.0 之前的 5.2.x 分支。

LED 循环点亮的实现位于 applications/main.c:main函数把PB4引脚(GET_PIN(B, 4))配置为输出模式,随后进入while(1)循环,以rt_pin_write输出高低电平并配合rt_thread_mdelay(500)实现 500ms 间隔的闪烁,同时通过rt_kprintf打印提示信息——这是理解 RT-Thread 引脚 API(rt_pin_mode/rt_pin_write)最直观的入门示例。

进阶使用

此 BSP 默认只开启了 GPIO 和串口 1 的功能,如果需使用更多高级功能,需要利用 ENV 工具对 BSP 进行配置,步骤如下:

  1. 在 bsp 下打开 env 工具。
  2. 输入menuconfig命令配置工程,配置好之后保存退出。
  3. 输入pkgs --update命令更新软件包。
  4. 输入scons --target=mdk5命令重新生成工程。

完成上述四步后,即可在 MDK5 中重新编译下载,将新配置的外设驱动加入固件。

menuconfig 中的可配置项

在menuconfig界面中,外设开关集中在Hardware Drivers Config → On-chip Peripheral Drivers菜单下,其选项定义见 board/Kconfig。以默认开启的 GPIO 与 UART1 为例,主要可配置项包括:

配置项默认值说明
BSP_USING_GPIOy使能 GPIO,选中后自动依赖RT_USING_PIN引脚设备框架
BSP_USING_UART/BSP_USING_UART1y使能 UART1,自动依赖RT_USING_SERIAL串口设备框架
BSP_STM32_UART_V1_TX_TIMEOUT2000UART1(串口驱动 v1)发送超时,单位 ms
BSP_UART1_RX_USING_DMAnUART1 接收 DMA(需开启RT_SERIAL_USING_DMA)
BSP_UART1_TX_USING_DMAnUART1 发送 DMA(需开启RT_SERIAL_USING_DMA)
BSP_UART1_RX_BUFSIZE256UART1 接收缓冲区大小,范围 64~65535(串口驱动 v2)
BSP_UART1_TX_BUFSIZE0UART1 发送缓冲区大小,范围 0~65535(串口驱动 v2)
BSP_UART1_DMA_PING_BUFSIZE64UART1 接收 DMA ping-pong 缓冲区大小,范围 32~65535

从默认配置 rtconfig.h 可以看到,当前 BSP 采用串口驱动 v1(RT_USING_SERIAL_V1),并已打开RT_SERIAL_USING_DMA使能位,因此 RX/TX DMA 两个选项在 Kconfig 中处于可选状态;若切换为 v2 驱动,则可进一步通过RX_BUFSIZE、TX_BUFSIZE等参数调整缓冲策略。底层外设驱动统一由source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig"引入,即 bsp/stm32/libraries/HAL_Drivers 下的公共驱动实现。

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

注意事项

  • 调试串口为串口 1,引脚映射说明:
PB6 ------> USART1_TX PB7 ------> USART1_RX

即 USART1 的发送引脚为 PB6、接收引脚为 PB7,串口线连接时需按此对应关系接线。控制台与 MSH 均复用该串口,因此在进阶配置中若要更换调试串口或重映射引脚,需要同步修改 board/CubeMX_Config 中的引脚配置与rtconfig.h中的RT_CONSOLE_DEVICE_NAME。

  • 板级初始化与系统时钟配置位于 board/board.c:SystemClock_Config使用内部高速时钟HSI(RCC_OSCILLATORTYPE_HSI)作为系统时钟源,未使能 PLL,AHB/APB1 均不分频,FLASH 等待周期为 0——这是默认功耗与性能均衡的时钟方案,如需更高主频可在该函数中调整 PLL 配置。

联系人信息

维护人:

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

相关推荐

上一篇:tfenv 使用教程
下一篇:Lobsterpicker 使用教程

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

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

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

立即咨询