ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

RT-Thread STM32L053-ST-Nucleo BSP 使用指南:超低功耗 Cortex-M0+ 开发板的移植、配置与快速上手

RT-Thread STM32L053-ST-Nucleo BSP 使用指南:超低功耗 Cortex-M0+ 开发板的移植、配置与快速上手 操作系统嵌入式物联网嵌入式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/stm32l053-st-nucleo/README.md及其中文版 README_zh.md为核心系统讲解 ST 官方 NUCLEO-L053R8 开发板 BSP板级支持包的芯片资源、外设支持情况、MDK5/IAR/GCC 多环境快速上手流程以及基于 ENV 工具和 Kconfig 的进阶外设配置方法。读完本文你将掌握如何在 8KB RAM 的 STM32L053R8 上把 RT-Thread 跑起来、点亮板载 LED、通过串口查看 msh 输出并能够按需开启 SPI、I2C、RTC、PWM、USB 等更多外设。一、开发板与芯片资源总览NUCLEO-L053R8 是 ST 官方推出的基于 Arm Cortex-M0 内核的 Nucleo-64 开发板板载 ST-LINK/V2-1 调试器/编程器绿色的 Nucleo 标识表明它属于超低功耗Low-power产品线。该板具有丰富的扩展接口兼容 Arduino™ 接口可方便地验证 STM32L053R8 芯片的性能。本 BSP 面向的 MCU 为STM32L053R8主频 32MHz64KB FLASH8KB RAM。这是一颗将 USB 2.0 无晶振通信能力与高能效 Cortex-M0 内核集成的超低功耗芯片工作电压低至 1.65V并内置存储器保护单元MPU以及 2KB 数据 EEPROM。板载资源类别资源说明MCUSTM32L053R8主频 32MHz64KB FLASH8KB RAMLED3 个USB communicationLD1 双色、power LEDLD3 红色、user LEDLD2 黄色按键2 个B1兼具唤醒功能PC13、B2RESET常用接口USB支持虚拟 COM 端口、大容量存储和调试端口三种模式调试接口标准 SWD通过板载 ST-LINK 提供芯片关键特性KEY FEATURES原文档对 STM32L053x6/8 系列的关键特性做了完整罗列这里全部保留并整理如下超低功耗平台Ultra-low-power platform供电电压 1.65V ~ 3.6V工作温度 -40 ~ 125 °CStandby 模式 0.27 μA2 个唤醒引脚Stop 模式 0.4 μA16 条唤醒线Stop 模式 RTC 8KB RAM 保持 0.8 μARun 模式 88 μA/MHz从 RAM 唤醒 3.5 μs从 Flash 唤醒 5 μs内核与存储Arm 32 位 Cortex-M0 内核带 MPU运行频率 32 kHz ~ 32 MHz0.95 DMIPS/MHz最大 64KB Flash带 ECC、8KB RAM、2KB 数据 EEPROM带 ECC20 字节备份寄存器支持扇区读写保护其他亮点最多 51 个快速 I/O其中 45 个 5V 容忍复位与电源管理5 档可选的超安全低功耗 BOR、超低功耗 POR/PDR、可编程电压检测器 PVD时钟源丰富1~25 MHz 晶体振荡器、带校准的 32 kHz RTC 振荡器、16 MHz 高速内部 RC出厂校准±1%、37 kHz 低功耗内部 RC、65 kHz~4.2 MHz 多速低功耗 RC、PLL 倍频预编程 Bootloader支持 USART、SPI 下载串行线调试 SWDLCD 驱动最多 8×28 段支持对比度调节、闪烁模式、片上升压转换器模拟外设12-bit ADC 1.14 Msps 最多 16 通道最低 1.65V 工作、12-bit 1 通道 DAC带输出缓冲最低 1.8V、2 个超低功耗比较器支持窗口模式与唤醒能力最多 24 路电容感应通道支持触摸按键、线性/旋转触摸传感器7 通道 DMA支持 ADC、SPI、I2C、USART、DAC、定时器8 个通信接口1 个 USB 2.0 无晶振带电池充电检测与 LPM、2 个 USARTISO 7816、IrDA、1 个低功耗 UART、最多 4 个 SPI 16 Mbits/s、2 个 I2CSMBus/PMBus9 个定时器1 个 16-bit 4 通道、2 个 16-bit 2 通道、1 个 16-bit 超低功耗定时器 LPTIM、SysTick、RTC、1 个 16-bit 基础定时器供 DAC 用、2 个看门狗独立/窗口CRC 计算单元、96 位唯一 ID、真随机数发生器 RNG 与防火墙保护从源码角度看芯片宏定义在 bsp/stm32/stm32l053-st-nucleo/SConscript 中统一指定为STM32L053xx并注释说明同系列 STM32L052xx/STM32L053xx/STM32L062xx/STM32L063xx/STM32L072xx/STM32L073xx/STM32L082xx/STM32L083xx 均可按需选择bsp/stm32/stm32l053-st-nucleo/rtconfig.h 中则通过SOC_STM32L053R8、SOC_SERIES_STM32L0、BOARD_STM32L053_NUCLEO、BOARD_SERIES_STM32_NUCLEO_64等宏标识具体芯片与板级型号。二、BSP 外设支持情况本 BSP 目前对外设的支持情况如下表所示默认配置下仅使能 GPIO 与 UART2板载外设支持情况备注板载 ST-LINK 转串口支持通过 USB 虚拟 COM 端口使用片上外设支持情况备注GPIO支持PA0, PA1...PC15 --- PIN: 0, 1...47UART支持UART2SPI暂不支持SPI1 即将支持I2C暂不支持软件 I2C 即将支持RTC暂不支持即将支持PWM暂不支持即将支持USB Device暂不支持即将支持IWG暂不支持即将支持在 bsp/stm32/stm32l053-st-nucleo/board/Kconfig 中可以印证这一现状Onboard Peripheral Drivers下默认使能BSP_USING_USB_TO_USART即 USB 转 uart2On-chip Peripheral Drivers下默认使能BSP_USING_GPIO与BSP_USING_UART2而 SPI、I2C、RTC、PWM、USB Device、IWG 等配置项尚未出现在菜单中——这正是表中暂不支持/即将支持的配置层依据。三、快速上手把 RT-Thread 跑起来本 BSP 为开发者提供 MDK5 与 IAR 工程并支持 GCC 开发环境。以下以 MDK5 开发环境为例介绍完整的运行流程。更通用的 Nucleo-64 系列说明可先阅读官方必读文档 bsp/stm32/docs/STM32_Nucleo-64_BSP_Introduction.md。第一步拉取依赖库关键在执行编译工作前请先打开 ENV 工具执行以下指令该指令用于拉取必要的 HAL 库及 CMSIS 库否则无法通过编译pkgs --update这一要求在构建脚本 bsp/stm32/stm32l053-st-nucleo/SConstruct 中被强制校验bsp_pkg_check()会检查packages/CMSIS-Core-latest、packages/stm32l0_cmsis_driver-latest、packages/stm32l0_hal_driver-latest三个目录是否存在若缺失则提示 Dependency packages missing, please running pkgs --update... 并退出构建。对应地bsp/stm32/stm32l053-st-nucleo/rtconfig.h 中启用了PKG_USING_STM32L0_HAL_DRIVER、PKG_USING_STM32L0_CMSIS_DRIVER等软件包宏表明 HAL/CMSIS 依赖通过 RT-Thread 在线软件包机制管理。第二步硬件连接使用数据线Type-A 转 Micro-USB连接开发板到 PC打开电源开关LD3PWR和 LD1COM指示灯会亮起。第三步编译与下载MDK5 工程双击project.uvprojx文件打开 MDK-Keil5 工程注意不是template.uvprojx模板工程点击 Options for Target 按钮确认调试配置Debug 页选择 ST-LINK Debugger点击 SettingsPort 选择 SW (Serial Wire)Flash Download 页勾选 Reset and Run编译并下载程序到开发板。工程默认配置即使用 ST-LINK 仿真器下载程序在通过 microUSB 连接开发板的基础上点击下载按钮即可完成烧录。第四步运行结果验证下载程序成功之后系统会自动运行。观察板载 LED 效果红色 LD1 与 LD3 常亮黄色 LD2 周期性闪烁。LED 闪烁逻辑对应应用层示例代码 bsp/stm32/stm32l053-st-nucleo/applications/main.cLED0_PIN定义为GET_PIN(A, 5)即 PA5main()中先通过rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT)将引脚设为输出模式再在循环中交替rt_pin_write(LED0_PIN, PIN_HIGH)与rt_pin_write(LED0_PIN, PIN_LOW)各延时 500ms实现 1Hz 周期闪烁。USB 虚拟 COM 端口默认连接串口 2UART2在终端工具中打开对应串口参数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 串口控制台设备名称uart2定义于 bsp/stm32/stm32l053-st-nucleo/rtconfig.h 的RT_CONSOLE_DEVICE_NAME uart2宏。终端工具方面若无现成软件可选用 PuTTY下载与使用教程请自行检索 PuTTY 官网及配套视频。若开机时不能打印版本信息参见本文常见问题章节排查。四、源码剖析时钟配置与内存布局时钟树HSI 16MHz 经 PLL 得到 32MHzbsp/stm32/stm32l053-st-nucleo/board/board.c 中的SystemClock_Config()展示了本 BSP 的系统时钟配置使用内部高速时钟HSI 16MHzRCC_OSCILLATORTYPE_HSI校准值 16开启 PLL源选择 HSIRCC_PLLSOURCE_HSI倍频RCC_PLLMUL_4、分频RCC_PLLDIV_2即 16MHz × 4 ÷ 2 32MHzSYSCLK 选择 PLL 输出RCC_SYSCLKSOURCE_PLLCLKAHB、APB1、APB2 均 1 分频Flash 等待周期FLASH_LATENCY_1为 USART2 单独配置外设时钟源选择 PCLK1RCC_USART2CLKSOURCE_PCLK1最后配置 SysTick 为 1ms 中断HAL_RCC_GetHCLKFreq()/1000并设置中断优先级 0。这也解释了为何文档强调开机时如果不能打印 RT-Thread 版本信息请将 BSP 中串口 GPIO 速率调低——HSI/PLL 时钟链路或串口波特率失配都会影响 UART2 控制台的稳定输出。内存布局64KB Flash / 8KB RAM / 堆定义bsp/stm32/stm32l053-st-nucleo/board/board.h 定义了板级内存边界STM32_FLASH_START_ADRESS 0x08000000STM32_FLASH_SIZE 64KBSTM32_SRAM_SIZE 88KBSTM32_SRAM_END 0x20000000 8KB堆起点HEAP_BEGIN依据编译器不同而取MDK/ARMCC 使用Image$$RW_IRAM1$$ZI$$LimitIAR 使用CSTACK段末尾GCC 使用__bss_end堆终点HEAP_END为 SRAM 末尾。GCC 链接脚本 bsp/stm32/stm32l053-st-nucleo/board/linker_scripts/link.lds 与之呼应ROM 起始0x08000000长度 64kRAM 起始0x20000000长度 8k入口为Reset_Handler并定义_system_stack_size 0x4001KB 系统栈。脚本中通过KEEP(*(FSymTab))、KEEP(*(VSymTab))保留 finsh shell 命令符号表通过KEEP(*(SORT(.rti_fn*)))保留 RT-Thread 自动初始化函数段这是 msh 命令与组件自动初始化机制能正常工作的链接层保证。同一目录下还提供了 IAR 的link.icf与 MDK 的link.sct链接脚本分别对应三种开发环境。默认内核与组件配置bsp/stm32/stm32l053-st-nucleo/rtconfig.h 是本 BSP 的默认配置快照值得关注的关键项包括内核RT_TICK_PER_SECOND 1000、32 级线程优先级、RT_USING_HEAP小内存管理算法RT_USING_SMALL_MEM作为堆、信号量/互斥量/事件/邮箱/消息队列全部使能组件RT_USING_COMPONENTS_INIT自动初始化、RT_USING_MSHFINSH命令行FINSH_THREAD_STACK_SIZE 1024支持历史记录与命令补全设备驱动RT_USING_SERIAL串口 v1 框架RT_USING_SERIAL_V1支持 DMA、RT_USING_PIN主线程RT_MAIN_THREAD_STACK_SIZE 2048、优先级 10——在 8KB RAM 的平台上这个尺寸已属紧凑配置扩展外设时需留意 RAM 余量。五、进阶使用用 ENV 工具扩展外设此 BSP 默认只开启了 GPIO 和串口 2 的功能。如需使用 SPI、I2C、RTC、PWM、USB 等更多高级功能需要利用 ENV 工具对 BSP 进行配置操作步骤如下在bsp/stm32/stm32l053-st-nucleo目录下打开 ENV 工具输入menuconfig命令配置工程配置完成后保存退出输入pkgs --update命令更新软件包输入scons --targetmdk5/iar命令重新生成工程GCC 环境直接执行scons构建即可。配置入口由 bsp/stm32/stm32l053-st-nucleo/Kconfig 组织顶层SOC_STM32L053R8与BOARD_STM32L053_NUCLEO为固定 bool 选项通过source $(RTT_DIR)/Kconfig引入内核配置、osource $PKGS_DIR/Kconfig引入在线软件包配置、rsource ../libraries/Kconfig引入 STM32 公共库配置并在非 Nano 版本下rsource board/Kconfig引入板级硬件驱动菜单。其中 bsp/stm32/stm32l053-st-nucleo/board/Kconfig 定义了硬件驱动配置菜单这里完整展开其当前可用选项配置项类型默认值说明BSP_USING_USB_TO_USARTbooly板载 USB 转 USARTuart2自动select BSP_USING_UART/BSP_USING_UART2BSP_USING_GPIObooly使能 GPIO自动select RT_USING_PINBSP_USING_UARTbooly使能 UART自动select RT_USING_SERIALBSP_STM32_UART_V1_TX_TIMEOUTint2000UART TX 超时依赖RT_USING_SERIAL_V1BSP_USING_UART2booly使能 UART2BSP_UART2_RX_USING_DMAboolnUART2 RX 使用 DMA依赖RT_SERIAL_USING_DMABSP_UART2_TX_USING_DMAboolnUART2 TX 使用 DMA依赖RT_SERIAL_USING_DMABSP_UART2_RX_BUFSIZEint256UART2 RX 缓冲区大小范围 64~65535依赖串口 v2 框架BSP_UART2_TX_BUFSIZEint0UART2 TX 缓冲区大小范围 0~65535依赖串口 v2 框架BSP_UART2_DMA_PING_BUFSIZEint64UART2 RX DMA ping-pong 缓冲区范围 32~65535依赖 v2 RX DMA例如若要启用 UART2 的 DMA 接收需先在 menuconfig 中确认RT_SERIAL_USING_DMA已开启rtconfig.h 中默认RT_SERIAL_USING_DMA已定义再打开BSP_UART2_RX_USING_DMA若切换至串口 v2 框架RT_USING_SERIAL_V2则 RX/TX 缓冲大小和 DMA ping-pong 缓冲选项才会生效。需要指出menuconfig菜单中暂未出现 SPI/I2C/RTC/PWM/USB Device/IWG 等条目因此这些外设目前在配置层面尚未开放——与第二节的外设支持表一致。SPI、I2C 等 STM32 系列外设驱动的通用使用方法可参考 bsp/stm32/docs/STM32系列BSP外设驱动使用教程.md。六、常见问题与注意事项开机无法打印 RT-Thread 版本信息请将 BSP 中串口 GPIO 速率调低如时钟树/引脚速率配置失配导致开机无法打印 RT-Thread 版本信息请重新选择 PC 端串口调试软件的串口号虚拟 COM 端口未正确枚举时常见编译前务必先执行pkgs --update拉取 HAL/CMSIS 依赖否则 SConstruct 的预构建检查会直接终止构建打开 MDK 工程时请使用project.uvprojx而非template.uvprojx8KB RAM 空间有限扩展外设与增大缓冲如 UART2 RX BUFSIZE时需评估内存余量必要时调整RT_MAIN_THREAD_STACK_SIZE等配置。七、维护与社区信息该 BSP 由 sun_shinebaozitai163.com维护中文文档由 Meco Man RT-Thread Community 翻译jiantingmanfoxmail.com。STM32L053R8 的完整数据手册与资源可前往 ST 官方网站该型号产品页获取。总结ST 官方 NUCLEO-L053R8 开发板 BSP 完整展示了 RT-Thread 在超低功耗 Cortex-M0 平台上的移植与使用路径默认仅开启 GPIO UART2 的轻量配置契合 8KB RAM 的硬件约束HSI PLL 的时钟链路与三段式链接脚本为多开发环境提供了可靠基础而 ENV menuconfig 的配置体系则为后续扩展 SPI、I2C、RTC、PWM、USB 等外设预留了标准入口。无论是初次接触 RT-Thread 的新手还是需要在该低功耗平台上做产品验证的工程师都可以按本文步骤快速起步并继续深入。赞分享操作系统嵌入式物联网嵌入式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 STM32L476-Nucleo BSP 开发指南超低功耗 Cortex-M4 平台移植与驱动配置实战RT Thread STM32L476 Nucleo BSP 开发指南超低功耗 Cortex M4 平台移植与驱动配置实战 导读 本文以 RT Thread操作系统嵌入式物联网嵌入式OSRTOSRT-Thread 在 STM32L412-Nucleo 开发板上的 BSP 实战指南超低功耗 Cortex-M4 平台的移植与驱动开发RT Thread 在 STM32L412 Nucleo 开发板上的 BSP 实战指南超低功耗 Cortex M4 平台的移植与驱动开发 导读 本文面向希望将操作系统嵌入式物联网嵌入式OSRTOSRT-Thread STM32L010RB-Nucleo 低功耗 BSP 使用指南从快速上手到外设配置RT Thread STM32L010RB Nucleo 低功耗 BSP 使用指南从快速上手到外设配置 RT Thread 为 ST 官方 NUCLEO L0操作系统嵌入式物联网嵌入式OSRTOS上一篇Sapphire框架49最佳实践10个提升Discord机器人性能的技巧下一篇UniTask如何克服WebGL单线程限制实现无阻塞异步操作的终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表