☰
STM32F091RC-NUCLEO 开发板 RT-Thread BSP 使用指南:快速上手与外设驱动配置
2026/9/26 8:15:53 网站建设 项目流程
  • 操作系统
  • 嵌入式
  • 物联网
  • 嵌入式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
点击查看免费下载

NUCLEO-F091RC 是意法半导体推出的基于 ARM Cortex-M0 内核的 ST Nucleo-64 系列开发板,本文以 RT-Thread 开源仓库中 bsp/stm32/stm32f091-st-nucleo 目录下的 BSP(板级支持包)为核心,系统讲解该 BSP 的板载资源、外设驱动支持现状、MDK5 快速上手流程,以及通过 ENV 工具开启 SPI、I2C、TIMER、PWM、ADC、RTC 等片上外设的进阶配置方法。读完本文,你将能够把 RT-Thread 操作系统真正运行在这块开发板上,并根据项目需要按需裁剪与扩展外设驱动。

开发板介绍

STM32F091RC-NUCLEO 开发板是 ST 官方推出的一款基于 ARM Cortex-M0 内核的开发板,最高主频为 48MHz。该开发板具有丰富的扩展接口(Arduino 兼容接口),可以方便地验证 STM32F091 芯片性能,同时板载 ST-LINK 调试器,支持即插即用。

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

  • MCU:STM32F091RC,主频 48MHz,256KB FLASH,32KB RAM
  • 外部 RAM:无
  • 外部 FLASH:无
  • 常用外设
    • 按键:1 个 user 按键(兼具唤醒功能,连接 PC13)
  • 常用接口:USB 转串口、Arduino 接口等
  • 调试接口:标准 SWD

从 BSP 源码 board/board.h 可以看到与资源定义对应的宏:STM32_FLASH_SIZE定义为256 * 1024(256KB),STM32_SRAM_SIZE定义为 32(32KB),HEAP_BEGIN由链接器符号(MDK 的Image$$RW_IRAM1$$ZI$$Limit、IAR 的 CSTACK 段或 GCC 的__bss_end)动态确定,HEAP_END为 SRAM 末端地址0x20000000 + 32 * 1024,即系统堆从 BSS 段末尾一直延伸到片内 SRAM 顶部。

外设支持情况

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

板载外设支持情况备注
ST-LINK 虚拟串口支持使用 USART2
片上外设支持情况备注
GPIO支持PA0, PA1... PC15 ---> PIN: 0, 1...64
UART支持USART1/2
SPI支持SPI1
I2C支持(软件 I2C)
TIMER支持TIM14/TIM16/TIM17
ADC支持ADC1
RTC支持支持外部晶振 LSE 和内部低速时钟 LSI
PWM支持TIM2 输出
FLASH支持片上 FLASH(FAL 抽象)
IWG支持独立看门狗

外设支持对应的驱动配置

上述外设支持能力均可在 board/Kconfig 中逐一找到对应开关,默认开启的项目与当前仓库中 rtconfig.h 的实际配置一致:

  • BSP_USING_USB_TO_USART(板载 USB 转串口,对应 USART2,默认开启,并自动选中BSP_USING_UART与BSP_USING_UART2)
  • BSP_USING_GPIO(默认开启,自动选中RT_USING_PIN)
  • BSP_USING_UART(默认开启,自动选中RT_USING_SERIAL),其中BSP_STM32_UART_V1_TX_TIMEOUT默认 2000

在 rtconfig.h 中可以看到 BSP 默认的片上外设组合为 GPIO + UART2,控制台设备为uart2(RT_CONSOLE_DEVICE_NAME "uart2"),并启用了RT_USING_SERIAL_V1与RT_SERIAL_USING_DMA,这意味着串口驱动同时具备 DMA 通道扩展能力。

使用说明

使用说明分为快速上手与进阶使用两个章节:

  • 快速上手:面向刚接触 RT-Thread 的新手,遵循简单步骤即可将 RT-Thread 操作系统运行在该开发板上并看到实验效果。
  • 进阶使用:面向需要在 RT-Thread 上使用更多开发板资源的开发者,通过 ENV 工具对 BSP 进行配置,开启更多板载资源,实现更多高级功能。

快速上手

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

请注意!!!

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

pkgs --update

该命令会依据 BSP 内的 Kconfig 中rsource "../libraries/Kconfig"引入的依赖关系,以及 rtconfig.h 中声明的软件包选项(PKG_USING_STM32F0_HAL_DRIVER、PKG_USING_STM32F0_CMSIS_DRIVER、PKG_USING_CMSIS_CORE)自动拉取对应版本的 STM32F0 HAL 库与 CMSIS 库到本地packages目录。

硬件连接

使用数据线连接开发板到 PC,打开电源开关。开发板板载 ST-LINK,数据线同时承担供电、调试与虚拟串口功能。

编译下载

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

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

MDK5 工程由 ENV 工具的scons --target=mdk5生成并保持与 rtconfig.py 中的工具链配置一致,该文件同时定义了 GCC(arm-none-eabi-)、MDK(armcc)、IAR(iccarm)三种工具链的编译参数、链接脚本(board/linker_scripts/link.lds/link.sct/link.icf)与烧录后处理动作(生成rtthread.bin)。

运行结果

下载程序成功之后,系统会自动运行。连接开发板对应串口到 PC,在终端工具里打开相应的串口(115200-8-1-N),复位设备后,可以看到 RT-Thread 的输出信息:

\ | / - RT - Thread Operating System / | \ 4.0.0 build Dec 21 2018 2006 - 2018 Copyright by rt-thread team msh >

出现msh >提示符即代表 RT-Thread 内核与 FinSH 命令行组件已成功运行。与此同时,程序入口 applications/main.c 会驱动板载 LED2(PA5)以 500ms 周期闪烁——该示例演示了 RT-Thread PIN 设备接口rt_pin_mode、rt_pin_write与线程延时rt_thread_mdelay的典型用法,可以作为后续 GPIO 应用的模板。

进阶使用

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

  1. 在 BSP 目录(bsp/stm32/stm32f091-st-nucleo)下打开 ENV 工具。
  2. 输入menuconfig命令配置工程,配置好之后保存退出。
  3. 输入pkgs --update命令更新软件包。
  4. 输入scons --target=mdk4/mdk5/iar命令重新生成工程(随后用对应 IDE 重新编译下载即可)。

更多详细的外设驱动使用介绍请参考 STM32 系列 BSP 外设驱动使用教程,以及同目录下的 STM32 系列驱动介绍、STM32 系列外设驱动添加指南。

各片上外设的 menuconfig 配置要点

以下配置项均来自 board/Kconfig,配置后建议对照重新生成的 rtconfig.h 确认宏是否生效。

UART(默认开启 USART2,可选 USART1)

  • BSP_USING_UART1/BSP_USING_UART2:使能对应串口;每个串口可单独开启BSP_UARTn_RX_USING_DMA、BSP_UARTn_TX_USING_DMA(需先开启RT_SERIAL_USING_DMA)。
  • BSP_UARTn_RX_BUFSIZE:串口接收缓冲区大小,范围 64~65535,默认 256(V2 串口框架下生效)。
  • BSP_UARTn_TX_BUFSIZE:串口发送缓冲区大小,范围 0~65535,默认 0(V2 串口框架下生效)。
  • BSP_UARTn_DMA_PING_BUFSIZE:DMA 乒乓接收缓冲区大小,范围 32~65535,默认 64(需同时开启 RX DMA)。
  • BSP_STM32_UART_V1_TX_TIMEOUT:串口 V1 框架发送超时,默认 2000。

SPI(默认关闭)

  • BSP_USING_SPI:使能 SPI 总线框架(选中RT_USING_SPI),随后可开启BSP_USING_SPI1,并可选开启BSP_SPI1_TX_USING_DMA与BSP_SPI1_RX_USING_DMA(开启 RX DMA 会自动选中 TX DMA)。

I2C(默认关闭,软件 I2C)

  • BSP_USING_SOFT_I2C:使能软件 I2C 总线框架;BSP_USING_SOFT_I2C1使能 swi2c1 总线,默认 SCL 引脚号为 34(PA6 区域)、SDA 引脚号为 35(PA7 区域),可通过RT_SOFT_I2C1_SCL_PIN/RT_SOFT_I2C1_SDA_PIN修改。BSP 同时定义了RT_SOFT_I2C1_SCL_PIN_DEFAULT/RT_SOFT_I2C1_SDA_PIN_DEFAULT作为引脚默认值兜底。

TIMER(默认关闭)

  • BSP_USING_TIM:使能定时器设备(选中RT_USING_CLOCK_TIME),可选BSP_USING_TIM14、BSP_USING_TIM16、BSP_USING_TIM17。

PWM(默认关闭)

  • BSP_USING_PWM:使能 PWM 设备(选中RT_USING_PWM);BSP_USING_PWM2使能 TIM2 输出 PWM,BSP_USING_PWM2_CH4使能 TIM2 通道 4。

ADC(默认关闭)

  • BSP_USING_ADC:使能 ADC 设备(选中RT_USING_ADC),BSP_USING_ADC1使能 ADC1。

FLASH(默认关闭,FAL 抽象)

  • BSP_USING_ON_CHIP_FLASH:使能片上 FLASH。BSP 预置了 FAL 分区表 board/ports/fal_cfg.h:app分区从偏移 0 开始、大小 240KB;param分区从 240KB 开始、大小 16KB,共同覆盖 256KB 片内 Flash。

RTC(默认关闭,可选时钟源)

  • BSP_USING_ONCHIP_RTC:使能 RTC(选中RT_USING_RTC)。通过BSP_RTC_USING_LSE/BSP_RTC_USING_LSI二选一选择时钟源,默认使用 LSE 外部低速晶振。该配置与 board/board.c 中的SystemClock_Config相呼应——时钟初始化会打开 LSE、HSI、HSI14、LSI 多个振荡器,并将RTCClockSelection设置为RCC_RTCCLKSOURCE_LSE。

WDT(默认关闭)

  • BSP_USING_WDT:使能独立看门狗(选中RT_USING_WDT),对应文档中的 IWG 外设。

系统时钟配置说明

BSP 的系统时钟初始化位于 board/board.c 的SystemClock_Config(),其要点如下:

  • 使能备份域访问并配置 LSE 驱动能力为RCC_LSEDRIVE_HIGH;
  • 打开 HSI(8MHz 内部高速时钟)、HSI14(ADC 专用)、LSI(内部低速时钟)与 LSE(外部 32.768kHz 晶振);
  • 系统时钟源选择 HSI,经 PLL 6 倍频(RCC_PLL_MUL6、RCC_PREDIV_DIV1)得到 48MHz 主频,AHB 与 APB1 均为 1 分频,Flash 等待周期为 1;
  • 外设时钟选择上,USART1/USART2 均挂载 PCLK1,RTC 选择 LSE 作为时钟源。

该时钟树是理解串口波特率(115200)与各类外设分频配置的基础,也决定了 PWM、TIMER 等外设的时基来源。

注意事项

  • 初次编译前务必在 ENV 中执行pkgs --update拉取 HAL/CMSIS 依赖,否则编译会因缺少 STM32F0 HAL 驱动而失败;
  • 默认 BSP 仅开启 GPIO 与 UART2(虚拟串口),其余外设需通过menuconfig显式开启并重新生成工程;
  • 串口参数为 115200-8-1-N,控制台设备固定为uart2,请勿随意修改RT_CONSOLE_DEVICE_NAME以免丢失日志输出;
  • 本文所涉配置均以当前仓库 bsp/stm32/stm32f091-st-nucleo 目录内的实际文件为准,若使用 RT-Studio 等其他工具链,请参考 STM32 系列如何创建新项目。

联系人信息

维护人:

  • zylx
  • 操作系统
  • 嵌入式
  • 物联网
  • 嵌入式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
点击查看免费下载
上一篇:Vanna 2.0:企业级AI-SQL生成框架的架构演进与实战指南
下一篇:告别单调:用250+配色方案打造你的专属终端工作空间

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

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

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

立即咨询