ARTICLE DETAIL

资讯详情

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

RT-Thread NUCLEO-STM32H563ZI BSP 快速上手与进阶开发指南

RT-Thread NUCLEO-STM32H563ZI 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 官方仓库中 NUCLEO-STM32H563ZI 的 BSP 说明文档 为核心系统讲解这块基于 Arm Cortex-M33 内核开发板的板级支持包Board Support Package的软硬件资源、快速编译下载流程、串口运行结果验证以及通过 ENV 工具进行外设裁剪与工程重生成的进阶玩法。读完本文你将能够在几分钟内把 RT-Thread 5.0.1 跑上 NUCLEO-STM32H563ZIT6并根据实际需求按源码级配置点开启 ADC、PWM、多路 UART 等片上外设。BSP 概况与文档定位该 BSP 由 RT-Thread 开发团队为 ST 的 NUCLEO-STM32H563ZIT6 开发板提供文档分为三大部分开发板资源介绍、快速上手、进阶功能。其中快速上手章节面向初次接触 RT-Thread 的开发者按照简单步骤即可将操作系统跑起来并看到实验效果进阶功能章节则面向需要驱动更多板载资源的开发者通过 ENV 工具配置 BSP 实现更高级的功能。BSP 目录同时提供英文 README.md 与中文 README_zh.md 两份说明本文内容以英文版为主体、中文版为对照。开发板资源一览NUCLEO-STM32H563ZIT6 是 ST 推出的 NUCLEO-144 系列开发板核心资源如下MCUSTM32H563ZI高性能 Arm Cortex-M33 内核带 TrustZone 安全扩展2 MB Flash、640 KB RAM、最高 250 MHz CPU算力可达 375 DMIPSDhrystone 2.1封装与外观LQFP144 封装板载 3 个用户 LED、2 个用户按键与 1 个复位按键、32.768 kHz 晶振连接与扩展SWD 调试接口、ST Zio 扩展连接器兼容 ARDUINO® Uno V3、ST morpho 扩展连接器供电与调试灵活供电ST-LINK USB VBUS、USB 连接器或外部电源板载 ST-LINK 调试器/编程器具备 USB 重新枚举能力可同时提供大容量存储、虚拟串口Virtual COM Port与调试端口三种功能软件生态支持 IAR Embedded Workbench®、MDK-ARM、STM32CubeIDE 等多种 IDE并可通过 STM32Cube MCU 软件包获得全面的免费软件库与例程。开发板外观如下图所示该 BSP 仓库还提供硬件框图图片帮助理解板级供电、调试与通信链路注意以上图片在仓库中同时存在于images/与figures/两个目录英文文档引用前者中文文档引用后者内容一致。BSP 外设支持情况原文档给出的外设支持矩阵如下外设类别外设名称支持情况备注板载外设USB 转串口板载 STLINK-V3EC支持板上 ST-LINK 虚拟串口片上外设GPIO支持通过 RT-Thread PIN 设备框架片上外设UART支持默认调试串口 UART3片上外设PWM支持需在 Kconfig 中按通道使能片上外设ADC支持需在 Kconfig 中按实例使能以上支持情况与源码实际配置吻合默认生成的 rtconfig.h 中开启了BSP_USING_GPIO、BSP_USING_UART与BSP_USING_UART3并将控制台设备指定为RT_CONSOLE_DEVICE_NAME uart3即调试串口。同时RT_USING_SERIAL、RT_USING_ADC、RT_USING_PWM、RT_USING_PIN等设备框架宏均已使能为后续通过 menuconfig 开启具体外设通道做好了准备。快速上手把 RT-Thread 跑起来第一步拉取 HAL 与 CMSIS 依赖这是最容易踩坑的一步。BSP 的编译依赖 STM32H5 的 HAL 库与 CMSIS 库而这些库以软件包package形式管理并未随 BSP 源码一起提交。因此在编译前必须先打开 ENV 工具并在 BSP 目录下执行pkgs --update该命令用于拉取必要的 HAL 库及 CMSIS 库不执行则无法通过编译。在 rtconfig.h 中可以看到对应的软件包配置项PKG_USING_STM32H5_HAL_DRIVER、PKG_USING_STM32H5_CMSIS_DRIVER均取 LATEST_VERSION它们正是由pkgs --update下载到packages/目录的。第二步硬件连接使用Type-C 数据线将开发板连接到 PC。注意该板载 ST-LINK 为带 Type-C 接口的 STLINK-V3EC连接后电脑会自动枚举出虚拟串口与调试端口。第三步编译与下载本 BSP 为开发者提供了 MDK5project.uvprojx与 IARproject.ewp/project.eww工程同时支持 GCC 开发环境。以 MDK5 为例双击 project.uvprojx 打开 MDK5 工程编译并下载程序到开发板。工程默认配置使用 ST-LINK 仿真器下载程序在 ST-LINK 已连接开发板的前提下直接点击下载按钮即可。本次工程搭建使用的 MDK 版本为 5.36建议使用较新版本的 MDK。第四步运行结果验证下载成功后系统自动运行板载LED1 会周期性闪烁。将开发板对应串口连接到 PC在终端工具中打开该串口参数115200-8-1-N即波特率 115200、8 数据位、1 停止位、无校验复位设备后可以看到 RT-Thread 的启动信息\ | / - RT - Thread Operating System / | \ 5.0.1 build Aug 27 2023 20:47:55 2006 - 2022 Copyright by RT-Thread team do components initialization. initialize rti_board_end:0 done initialize rt_work_sys_workqueue_init:0 done initialize finsh_system_init:0 done msh msh 提示符出现即代表系统正常运行此时已可输入 RT-Thread 的 Shellfinsh/msh命令进行交互。LED1 闪烁背后的源码LED 闪烁逻辑在 applications/main.c 中实现源码确认 LED1 连接在PB0引脚/* defined the LED1 pin: PB0 */ #define LED1_PIN GET_PIN(B, 0) int main(void) { int count 1; rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT); while (count) { rt_pin_write(LED1_PIN, PIN_HIGH); rt_thread_mdelay(500); rt_pin_write(LED1_PIN, PIN_LOW); rt_thread_mdelay(500); } return RT_EOK; }这段代码演示了 RT-Thread 统一 PIN 设备接口的典型用法rt_pin_mode配置输出模式rt_pin_write拉高/拉低电平rt_thread_mdelay让出 CPU 实现 500ms 延时构成周期 1s 的 LED 闪烁。进阶使用用 ENV 配置更多外设此 BSP默认只开启 GPIO 与 UART3调试串口。如果需使用更多高级功能需要利用 ENV 工具对 BSP 进行配置完整流程如下在 BSP 目录bsp/stm32/stm32h563-st-nucleo下打开 ENV 工具输入menuconfig命令配置工程配置好之后保存退出输入pkgs --update命令更新软件包使新勾选的软件包生效输入scons --targetmdk4/mdk5/iar命令重新生成对应 IDE 的工程文件。注意原文档此处提到默认开启的是串口 1UART1但仓库实际生成的 rtconfig.h 中默认使能的是BSP_USING_UART3且控制台设备名为uart3与注意事项中调试串口为 UART3 的描述一致使用时请以配置文件为准。Kconfig 外设开关详解外设的可配置项集中在 board/Kconfig与文档的外设支持矩阵一一对应是进阶配置的菜单地图GPIO默认开启BSP_USING_GPIO使能 GPIO自动选择RT_USING_PIN默认y。UART 系列默认开启 UART3BSP_USING_UART1默认n可单独开启每个 UART 下都有 DMA 与缓冲区相关选项BSP_USING_UART2默认nBSP_USING_UART3默认y即调试串口BSP_USING_LPUART1默认y低功耗串口通用项BSP_STM32_UART_V1_TX_TIMEOUT默认 4000UART V1 框架下的发送超时ms各串口的 RX 缓冲区大小*_RX_BUFSIZE范围 64~65535默认 256、TX 缓冲区大小范围 0~65535默认 0在使能RT_SERIAL_USING_DMA后还可为每个串口分别开启 RX/TX DMA以及配置 RX DMA 乒乓缓冲区大小*_DMA_PING_BUFSIZE默认 64。ADCBSP_USING_ADC默认n总开关使能后自动选择RT_USING_ADCBSP_USING_ADC1、BSP_USING_ADC2默认n按需开启具体 ADC 实例。PWMBSP_USING_PWM默认n总开关使能后自动选择RT_USING_PWMBSP_USING_PWM1定时器 1 输出 PWM含 CH1/CH2/CH3、BSP_USING_PWM3定时器 3CH2、BSP_USING_PWM4定时器 4CH3/CH4均为默认n按通道粒度使能。软件 I2CBSP_USING_SOFT_I2C与BSP_USING_SOFT_I2C1默认n开启后可配置软件 I2C 的 SCL默认引脚号 24与 SDA默认引脚号 25引脚号。RTduinoArduino 生态兼容BSP_USING_ARDUINO默认n开启后自动选择PKG_USING_RTDUINO并连带开启 STLINK_TO_USART、LPUART1、GPIO、ADC1/2、PWM1/3/4 多个通道、软件 I2C 等一揽子外设。仓库 applications/arduino_main.cpp 提供了对应的 Arduino 风格示例setup/loopSerial2.println(Hello Arduino!)说明该 BSP 具备 RTduino 兼容能力。以上选项保存退出后需重新执行pkgs --update与scons --targetmdk4/mdk5/iar生成包含新外设驱动的工程。更完整的 STM32 外设驱动使用说明可参阅仓库内 STM32 系列 BSP 外设驱动使用教程。时钟、内存与工具链配置源码级补充为了让读者对 BSP 有更深的理解这里结合仓库源码补充文档未展开的底层配置系统时钟board/board.c 中的SystemClock_Config()将主频配置到250 MHzPLL 以 HSE 为源RCC_PLL1_SOURCE_HSE分频系数PLLM4、倍频PLLN250、PLLP2最终得到 250 MHz 内核时钟并配套FLASH_LATENCY_5等待周期。同时开启了 HSI48供 USB 使用。该文件由 STM32CubeMX 生成对应的工程配置见 board/CubeMX_Config/CubeMX_Config.ioc。内存与堆board/board.h 定义了 Flash 起始地址0x08000000、大小 2 MB2048 * 1024SRAM1 起始0x20000000、大小 640 KB堆HEAP从各编译器的 ZI/bss 段末尾延伸到 SRAM1 末尾分别适配了 MDKImage$$RW_IRAM1$$ZI$$Limit、IARCSTACK段末尾与 GCC__bss_end三种工具链的堆起点计算方式。链接脚本统一放在 board/linker_scriptslink.lds/link.sct/link.icf分别对应 GCC/MDK/IAR。工具链选择rtconfig.py 支持 gcc、keilarmclang、iar 三套工具链通过RTT_CC环境变量或修改CROSS_TOOL切换GCC 环境下目标 CPU 为cortex-m33浮点采用fpv5-sp-d16/hard-float生成产物除rtthread.elf外还会输出rtthread.bin。BSP 根目录的 SConscript 则为整个工程注入了STM32H563xx宏供 HAL 库裁剪使用。注意事项调试串口 UART3 的引脚映射详见 STM32CubeMX 中的配置PD8 ------ USART3_TXT_VCP_TX PD9 ------ USART3_RXT_VCP_RX这意味着调试串口复用到了 ST-LINK 的虚拟串口VCP通道因此直接用 Type-C 线即可观察系统日志无需额外外接 USB 转串口模块MDK 版本建议使用较新版本的 MDK本项目搭建时使用 MDK 5.36依赖完整性问题任何情况下都不要跳过pkgs --update否则缺少 HAL/CMSIS 库必然导致编译失败重新生成工程后的行为scons --target...会按 menuconfig 的配置重新生成工程文件改动外设配置后必须重新执行否则新配置不会反映到 IDE 工程中。参考资料与深入阅读开发板原理图MB1404-H563ZI-C01、STM32H563 官方介绍页、开发板用户手册UM3115等资料可从 ST 官网对应页面获取原文档以外部链接形式给出此处不重复粘贴本 BSP 完整工程文件project.uvprojxMDK5、project.ewpIAR外设驱动使用教程STM32 系列 BSP 外设驱动使用教程中文版 BSP 说明README_zh.md维护人yuanzihao联系邮箱 yyzh.email。赞分享操作系统嵌入式物联网嵌入式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 开源仓库中 bsp/stm32/stm操作系统嵌入式物联网嵌入式OSRTOSSTM32G070RB-Nucleo 开发板 RT-Thread BSP 快速上手与进阶使用指南STM32G070RB Nucleo 开发板 RT Thread BSP 快速上手与进阶使用指南 本文档面向 RT Thread 开发者系统讲解 STM32G操作系统嵌入式物联网嵌入式OSRTOSRT-Thread STM32F207ZG Nucleo-144 BSP 快速上手与进阶配置指南RT Thread STM32F207ZG Nucleo 144 BSP 快速上手与进阶配置指南 本指南以 RT Thread 仓库中 bsp/stm32/st操作系统嵌入式物联网嵌入式OSRTOS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表