RT-Thread STM32WL55 NUCLEO-WL55JC2 BSP 快速上手与外设驱动开发指南

发布时间:2026/9/28 9:13:21
RT-Thread STM32WL55 NUCLEO-WL55JC2 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/stm32wl55-st-nucleo目录下的 BSP 说明文档 为核心系统讲解如何将 RT-Thread 操作系统运行到 ST 官方 NUCLEO-WL55JC2 低功耗双核开发板上并在此基础上借助 ENV 工具开启 GPIO、LPUART 等更多板载外设。读完本文你将掌握该 BSP 的板载资源布局、MDK5/IAR/GCC 三种编译环境的构建流程、串口控制台的使用方法以及通过menuconfigpkgs --updatescons重新生成工程的进阶配置套路并结合仓库源码看清 LED 闪烁示例与系统时钟初始化的底层实现。开发板与 BSP 简介NUCLEO-WL55JC2 是意法半导体ST官方出品的 STM32WL 系列低功耗开发板板载 Cortex-M4 内核另有 Cortex-M0 无线协处理器用于 LoRa 等 Sub-GHz 无线通信。板子正面的绿色 Nucleo 标识即代表低功耗系列同时板载了 ST-LINK/V3E 调试器/编程器、micro USB 接口和 Arduino™ nano 兼容的扩展接口。本 BSP板级支持包位于仓库的 bsp/stm32/stm32wl55-st-nucleo 目录文档主体结构包含开发板资源介绍BSP 快速上手新手可在一刻钟内让 RT-Thread 跑起来进阶使用方法利用 ENV 工具开启更多板载资源板载资源一览开发板外观如下MCU 核心参数MCUSTM32WLJC2主频48MHzHSI 经 PLL 倍频而来详见下文时钟配置256KB FLASH64KB RAM32KB 32KB 分区分别为非备份 SRAM1 与备份 SRAM2。从源码可以进一步印证内存划分在 board/board.h 中定义了STM32_FLASH_START_ADRESS 0x08000000、STM32_FLASH_SIZE 256 * 1024256KB以及STM32_SRAM1_SIZE 6464KB、STM32_SRAM1_START 0x20000000RT-Thread 的堆区HEAP即落在 SRAM1 上。GCC 链接脚本 board/linker_scripts/link.lds 则进一步细分了专属于 CM4 内核的存储空间ROM 128K0x08000000、RAM1 16K0x20000000与备份 RAM2 16K0x20008000这体现了 STM32WL 双核架构下 CM4 与无线核各自拥有独立地址空间的特性。板载外设与接口类别资源说明指示灯LED6USB communication 双色灯指示灯LED5Power LED黄绿色指示灯LED1 / LED2 / LED3用户 LED蓝色 / 黄绿色 / 红色按键B4复位按键按键B1 / B2 / B33 个 User Button接口micro USB提供虚拟 COM 端口、大容量存储、调试端口三种模式调试ST-LINK/V3E板载调试器/编程器支持 SWD 下载与虚拟串口该板更多硬件细节可参考 ST 官方 STM32WL 系列产品资料见原 BSP 文档中的链接本文以仓库内源码与文档为准展开。外设支持情况BSP 文档明确给出了当前外设支持矩阵板载外设支持情况备注板载 ST-LINK 转串口支持LPUART1片上外设支持情况备注GPIO支持LED1(PB15)、LED2(PB9)、LED3(PB11)UART支持LPUART1扩展模块支持情况备注默认配置rtconfig.h只开启了 GPIO 与 LPUART1 两个驱动BSP_USING_STLINK_TO_UART板载 ST-LINK 转串口、BSP_USING_GPIO、BSP_USING_UART、BSP_USING_LPUART1。串口控制台设备名在 rtconfig.h 中声明为RT_CONSOLE_DEVICE_NAME lpuart1这解释了为何终端中看到的是 LPUART1 的输出。快速上手让 RT-Thread 跑起来本 BSP 同时提供MDK5Keil和IAR工程并支持GCC命令行构建环境。下面以 MDK5 为例介绍完整流程。第 0 步拉取 HAL 库务必执行重要提醒在编译前必须先在 ENV 工具中执行以下命令用于拉取 STM32WL 的 HAL 库与 CMSIS 库它们是编译所必需的依赖pkgs --update这一点也可以在 rtconfig.h 中得到印证——其中开启了PKG_USING_STM32WL_HAL_DRIVER、PKG_USING_STM32WL_CMSIS_DRIVER与PKG_USING_CMSIS_COREHAL 与 CMSIS 均以软件包package形式由pkgs --update拉取到packages目录跳过该步骤将因缺失stm32wlxx.h等头文件而无法编译。硬件连接使用 micro USB 数据线连接开发板与 PC打开电源开关。此时 PC 端会枚举出 ST-LINK 相关的三个 USB 接口虚拟串口 / 大容量存储 / 调试口。编译下载双击project.uvprojx打开 MDK5 工程该文件位于 bsp/stm32/stm32wl55-st-nucleo/project.uvprojx编译后下载程序到开发板。工程默认配置使用ST-LINK 仿真器下载通过 microUSB 连接开发板后直接点击 Download 按钮即可烧录。运行结果下载成功后系统自动运行可观察到的现象LED6、LED5 常亮电源与 USB 通信指示LED1、LED2、LED3 周期性闪烁。USB 虚拟 COM 端口默认连接 LPUART1在终端工具中打开相应串口参数115200-8-1-N即波特率 115200、8 位数据位、1 位停止位、无校验复位开发板后可以看到 RT-Thread 的启动信息\ | / - RT - Thread Operating System / | \ 4.0.3 build Sep 9 2020 2006 - 2020 Copyright by rt-thread team msh 出现msh 提示符即代表 RT-Thread ShellFinSH已就绪可以输入help、ps、list_device等内置命令对应 rtconfig.h 中RT_USING_MSH、FINSH_USING_MSH、MSH_USING_BUILT_IN_COMMANDS等宏配置。LED 闪烁示例的源码解读示例程序位于 applications/main.c它演示了 RT-Thread PIN 驱动框架的最基本用法#include rtthread.h #include rtdevice.h #include board.h /* STM32WL55JC_NUCLEO Color led */ #define LED_BLUE_PIN GET_PIN(B,15) /* defined the LED_BLUE pin: PB15 */ #define LED_GREEN_PIN GET_PIN(B,9) #define LED_RED_PIN GET_PIN(B,11) int main(void) { /* set LED_BLUE pin mode to output */ rt_pin_mode(LED_BLUE_PIN, PIN_MODE_OUTPUT); while (1) { rt_pin_write(LED_BLUE_PIN, PIN_HIGH); rt_thread_mdelay(500); rt_pin_write(LED_BLUE_PIN, PIN_LOW); rt_thread_mdelay(500); } }关键点GET_PIN(B,15)是 BSP 提供的宏将 GPIO 端口与引脚号编码为统一的 PIN 设备编号此处对应 LED1PB15rt_pin_mode()设置引脚为输出模式rt_pin_write()以 500ms 间隔交替输出高/低电平实现蓝色 LED 的周期闪烁BSP 文档描述的 LED1\LED2\LED3 闪烁效果由板载不同 LED 引脚共同呈现示例默认驱动 LED1。该引脚映射与 BSP 文档外设表LED1(PB15)、LED2(PB9)、LED3(PB11)完全一致驱动实现位于 STM32 公共驱动目录bsp/stm32/libraries中的drv_gpio.c等。系统时钟初始化48MHz 从何而来board/board.c 中的SystemClock_Config()展示了 48MHz 主频的生成链路时钟源选择内部高速HSI校准值 70关闭 LSEPLL 配置PLLM DIV2、PLLN 30、PLLR DIV5、PLLP DIV5、PLLQ DIV5PLL 源为 HSI约 16MHz 经二分频后为 8MHz再 ×30 ÷5 得 48MHzSYSCLK 选择 PLLCLKAHB/APB1/APB2 均不额外分频Flash 等待周期设为 2FLASH_LATENCY_2。这与 BSP 文档主频 48MHz的描述相互印证也是所有 STM32WL BSP 外设时钟工作的基础。进阶使用用 ENV 开启更多外设此 BSP 默认只开启了 GPIO 与 LPUART1如需使用更多高级功能利用 ENV 工具配置即可步骤如下在 bsp 目录下打开 ENV 工具即进入 bsp/stm32/stm32wl55-st-nucleo 后启动 ENV输入menuconfig命令配置工程配置好之后保存退出输入pkgs --update命令更新软件包输入scons --targetmdk4/mdk5/iar命令重新生成工程根据所用工具链选择目标若使用 GCC 则直接scons编译。menuconfig 背后BSP 的 Kconfig 配置体系该 BSP 的配置项由两级 Kconfig 组织顶层 Kconfig声明SOC_STM32WL55JC选中后自动关联SOC_SERIES_STM32WL系列配置、RT_USING_COMPONENTS_INIT与RT_USING_USER_MAIN、BOARD_STM32WL55_NUCLEO关联BOARD_SERIES_STM32_NUCLEO_64并通过rsource ../libraries/Kconfig引入 STM32 公共外设库的配置板级 board/Kconfig定义Hardware Drivers Config菜单树是外设开关的实操入口。板级 Kconfig 可调项速查表以 board/Kconfig 为准可配置项及默认值如下配置项含义默认值BSP_USING_STLINK_TO_UART板载 ST-LINK 转串口lpuart1y自动连带开启 UART 与 LPUART1BSP_USING_GPIO启用 GPIO连带RT_USING_PINyBSP_USING_ONCHIP_RTC启用片上 RTCnBSP_USING_UART启用 UART 框架连带RT_USING_SERIALyBSP_STM32_UART_V1_TX_TIMEOUTUART TX 超时毫秒V1 串口框架2000BSP_USING_UART1/BSP_USING_UART2启用 UART1 / UART2nBSP_UARTx_RX_USING_DMA/BSP_UARTx_TX_USING_DMAUARTx 收发 DMA需RT_SERIAL_USING_DMAnBSP_UARTx_RX_BUFSIZEUARTx 接收缓冲区大小V2 框架范围 64~65535256BSP_UARTx_TX_BUFSIZEUARTx 发送缓冲区大小V2 框架范围 0~655350BSP_UARTx_DMA_PING_BUFSIZEUARTx 接收 DMA 乒乓缓冲区大小范围 32~6553564BSP_USING_LPUART1启用 LPUART1yBSP_LPUART1_RX_USING_DMALPUART1 接收 DMAn从上表可以推断该 BSP 的扩展方向除 LPUART1 外UART1、UART2 均已在 Kconfig 中预留了完整的配置骨架含 DMA 收发与 V2 框架下的收发缓冲区调节开发者只需在menuconfig中勾选相应项、重新生成工程即可把普通 UART 加入系统若需要串口 DMA 功能还需先在组件菜单中开启RT_SERIAL_USING_DMA。构建系统与工具链GCCrtconfig.py中CPUcortex-m4、ARCHarm默认使用arm-none-eabi-工具链编译参数为-mcpucortex-m4 -mthumb -mfpufpv4-sp-d16 -mfloat-abisoft链接脚本为 board/linker_scripts/link.lds产物为rt-thread.binMDK5armcc / armclang使用project.uvprojx散列链接脚本为 board/linker_scripts/link.sctIARiccarm配置片段见 rtconfig.py 的iccarm分支链接脚本为 board/linker_scripts/link.icf。三种工具链均定义宏STM32WL55xx见 SConscript 与 board/SConscript用于选择 STM32WL 系列的器件级头文件与启动文件。更多外设驱动的通用教程若需进一步开启 SPI、I2C、ADC、PWM、SDIO 等 STM32 系列通用外设可参考 STM32 BSP 公共文档STM32 系列 BSP 外设驱动使用教程。该文档与本文相互补充本文负责 NUCLEO-WL55JC2 单板落地该教程负责 STM32 全系列外设驱动的通用配置方法。注意事项开机无打印排查若开机时不能打印 RT-Thread 版本信息请重新选择 PC 端串口调试软件的串口号——ST-LINK 虚拟串口在系统枚举后可能占用多个 COM 端口需确认选中了映射到 LPUART1 的那一个首次编译前必做pkgs --updateHAL 与 CMSIS 以软件包形式依赖缺包必然编译失败双核特性提示STM32WL55JC2 内含 CM4 应用核与无线协处理器核本 BSP 面向 CM4 应用核若需使用 LoRa/Sub-GHz 射频功能需结合 ST 官方无线固件栈另行开发当前 BSP 未默认开启。维护信息本 BSP 维护人为 forest-rain邮箱693097971qq.comBSP 源码与文档变更记录见各文件头部 Change Logs如 applications/main.c 与 board/board.c 均标注了 2020-09-09 / 2020-07-05 的首次提交信息。如在使用中遇到问题可参照本文排查思路定位或结合 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 在 STM32G071RB-Nucleo 上的 BSP 快速上手与外设驱动开发指南RT Thread 在 STM32G071RB Nucleo 上的 BSP 快速上手与外设驱动开发指南 本文档围绕 RT Thread 为 ST 官方 STM3操作系统嵌入式物联网嵌入式OSRTOSRT-Thread NUCLEO-G491RE BSP 开发指南从快速上手到外设驱动配置RT Thread NUCLEO G491RE BSP 开发指南从快速上手到外设驱动配置 本篇技术指南以 RT Thread 仓库中 NUCLEO G491R操作系统嵌入式物联网嵌入式OSRTOSSTM32F091RC-NUCLEO 开发板 RT-Thread BSP 使用指南快速上手与外设驱动配置STM32F091RC NUCLEO 开发板 RT Thread BSP 使用指南快速上手与外设驱动配置 NUCLEO F091RC 是意法半导体推出的基于操作系统嵌入式物联网嵌入式OSRTOS上一篇Typstudio全新排版语言Typst的终极桌面编辑器让文档创作效率提升10倍下一篇如何在Fewshot-CIFAR100上使用Meta-Transfer Learning获得56.8%准确率创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询