ARTICLE DETAIL

资讯详情

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

STM32F410-Nucleo-64 开发板 RT-Thread BSP 使用指南:快速上手与源码级解析

STM32F410-Nucleo-64 开发板 RT-Thread 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/stm32f410-st-nucleo目录下的 README_zh.md 为核心系统介绍基于 ARM Cortex-M4 内核的 STM32F410-Nucleo-64 开发板板级支持包BSP的硬件资源、外设支持情况、快速上手流程与 ENV 进阶配置方法并结合 board.c、main.c 等源码剖析时钟初始化、GPIO 点灯与内存布局等底层实现。读完本文你将掌握如何在 STM32F410-Nucleo-64 上把 RT-Thread 跑起来并能独立使用 ENV 工具开启更多板载外设。开发板与芯片概览探索者 STM32F410-Nucleo-64 是意法半导体推出的一款基于 ARM Cortex-M4 内核的 NUCLEO-64 标准开发板。板载主控为STM32F410RBT6最高主频可达100MHz拥有128KB FLASH与32KB RAM。开发板外观如下图所示该开发板常用板载资源如下MCUSTM32F410RBT6主频 100MHz128KB FLASH32KB RAM。常用外设LED3 个分别为 USB communication (LD1)、user LED (LD2)、power LED (LD3)。按键2 个分别为 USER 和 RESET。调试接口板载 ST-LINK/V2-1 调试器同时提供 USB 虚拟串口功能。结合本 BSP 目录下的英文版 README.md 可以进一步了解 STM32F410x8/B 系列芯片的完整特性该系列属于 STM32 Dynamic Efficiency™ 产品线新增了 Batch Acquisition Mode (BAM) 特性可在数据批量采集期间进一步降低功耗。芯片集成 1 路 12 位 ADC最高 2.4 MSPS、最多 16 通道、1 路 12 位 DAC、低功耗 RTC、最多 9 个定时器含 1 个 16 位电机控制高级定时器、1 个可在 Stop 模式下工作的低功耗定时器、3 个 16 位通用定时器、1 个 32 位定时器、16 流 DMA 控制器以及最多 9 个通信接口3 路 I2C、3 路 USART、3 路 SPI/I2S。此外还具备真随机数发生器、CRC 计算单元与 96 位唯一 ID。BSP 外设支持情况根据 README_zh.md 中的外设支持表本 BSP 当前对外设的支持情况如下片上外设支持情况备注GPIO支持PA0, PA1... --- PIN: 0, 1...63UART支持UART2从 rtconfig.h 中可以看到BSP 默认开启的硬件驱动配置包括BSP_USING_STLINK_TO_USART开启 ST-LINK 到 USARTuart2的板载外设驱动BSP_USING_GPIO开启片上 GPIO 驱动BSP_USING_UART/BSP_USING_UART2开启片上 UART2 驱动BSP_STM32_UART_V1_TX_TIMEOUT 2000UART 发送超时时间ms。同时控制台设备被配置为uart2见 rtconfig.h 中RT_CONSOLE_DEVICE_NAME uart2因此系统启动信息默认从板载 ST-LINK 的 USB 虚拟串口输出。快速上手将 RT-Thread 运行起来本 BSP 为开发者提供了MDK5和IAR工程同时支持GCC开发环境。下面以 MDK5 开发环境为例介绍完整流程。第一步更新软件包编译前必做请注意在执行编译工作前请先打开 ENV 工具执行以下指令。该指令用于拉取必要的 HAL 库及 CMSIS 库否则无法通过编译pkgs --update从 rtconfig.h 可以看到本 BSP 依赖的软件包包括PKG_USING_CMSIS_CORE、PKG_USING_STM32F4_HAL_DRIVER与PKG_USING_STM32F4_CMSIS_DRIVER这些依赖项正是由pkgs --update从软件包中心拉取到本地packages目录的。第二步硬件连接使用 Type-A to Mini-B 线连接开发板和 PC 供电此时红色 LEDLD3 (PWR)和LD1 (COM)会点亮。第三步编译下载双击project.uvprojx文件打开 MDK5 工程编译并下载程序到开发板。工程默认配置使用 ST-LINK 下载程序点击下载按钮即可将程序下载到开发板。第四步运行结果下载程序成功之后系统会自动运行。观察开发板上 LED 的运行效果红色LD3和LD1常亮、绿色LD2会周期性闪烁。USB 虚拟 COM 端口默认连接串口 2在终端工具里打开相应的串口115200-8-1-N复位设备后可以看到 RT-Thread 的输出信息\ | / - RT - Thread Operating System / | \ 4.0.3 build Mar 7 2020 2006 - 2020 Copyright by rt-thread team msh msh 提示符出现后即表明 RT-Thread 已成功运行在开发板上可以输入命令与系统交互。LED 闪烁的底层实现绿色 LD2user LED连接在 PA5 引脚上其闪烁逻辑由 main.c 实现。程序首先通过GET_PIN(A, 5)宏获取 PA5 的引脚编号调用rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT)将引脚配置为输出模式然后在while (1)循环中每 500ms 翻转一次电平#define LED0_PIN GET_PIN(A, 5) int main(void) { /* set LED0 pin mode to output */ rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT); while (1) { rt_pin_write(LED0_PIN, PIN_HIGH); rt_thread_mdelay(500); rt_pin_write(LED0_PIN, PIN_LOW); rt_thread_mdelay(500); } }这段代码演示了 RT-Thread PIN 设备框架的标准用法rt_pin_mode()设置引脚模式、rt_pin_write()输出高低电平、rt_thread_mdelay()让当前线程延时而不是忙等待是后续开发板载外设时最常用的 API 组合。进阶使用用 ENV 工具配置更多外设此 BSP 默认只开启了 GPIO 和串口 2 的功能更多高级功能需要利用 ENV 工具对 BSP 进行配置。标准步骤如下在 BSP 目录下打开 ENV 工具输入menuconfig命令配置工程配置好之后保存退出输入pkgs --update命令更新软件包输入scons --targetmdk4/mdk5/iar命令重新生成工程按需选择目标工程类型。本章节更详细的介绍请参考 STM32 系列 BSP 外设驱动使用教程。可配置的硬件驱动选项从 board/Kconfig 可以查看该 BSP 对外暴露的完整配置菜单主要包括三个层级板载外设驱动Onboard Peripheral DriversBSP_USING_STLINK_TO_USART开启 ST-LINK 到 USARTuart2桥接默认开启default y开启后自动选中BSP_USING_UART与BSP_USING_UART2BSP_USING_ARDUINO兼容 Arduino 生态RTduino默认关闭default n。开启后会联动开启 ADC1、PWM1CH1/CH2/CH3、软件 I2C1 等外设并选中PKG_USING_RTDUINO软件包。软件 I2C1 的默认引脚为 SCL24、SDA25对应引脚定义见 applications/arduino_pinout/pins_arduino.c。片上外设驱动On-chip Peripheral DriversBSP_USING_GPIO开启 GPIO默认开启自动选中RT_USING_PINBSP_USING_UART开启 UART 框架RT_USING_SERIAL默认开启。其下可分别开关 UART1、UART2并为每个串口配置BSP_USING_UARTx_RX_DMA/BSP_USING_UARTx_TX_DMA使能 RX/TX DMA依赖RT_SERIAL_USING_DMA默认关闭BSP_UARTx_RX_BUFSIZERX 缓冲区大小取值范围 64~65535默认 256BSP_UARTx_TX_BUFSIZETX 缓冲区大小取值范围 0~65535默认 0BSP_UARTx_DMA_PING_BUFSIZERX DMA 乒乓缓冲区大小取值范围 32~65535默认 64BSP_STM32_UART_V1_TX_TIMEOUTUART TX 超时时间ms默认 2000。BSP_USING_ADC开启 ADC 框架RT_USING_ADC默认关闭其下可开启BSP_USING_ADC1BSP_USING_PWM开启 PWM 框架RT_USING_PWM默认关闭其下可开启 TIM1 输出 PWMBSP_USING_PWM1并选择 CH1/CH2/CH3 通道BSP_USING_SOFT_I2C开启软件 I2Cswi2c默认关闭其下可配置RT_SOFT_I2C1_SCL_PIN默认 24与RT_SOFT_I2C1_SDA_PIN默认 25。这些菜单项通过source $(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig与 STM32 公共 HAL 驱动框架bsp/stm32/libraries/HAL_Drivers关联配置结果最终写入rtconfig.h并由 SCons 构建系统编译进工程。源码级解析时钟、内存与工程结构系统时钟配置board.c 中的SystemClock_Config()完成系统时钟初始化使用内部HSI 16MHz作为 PLL 输入源RCC_PLLSOURCE_HSIPLL 参数为 M16、N336、P4分频后得到 100MHz 左右的系统主频Q4、R2并将电源调压器配置为PWR_REGULATOR_VOLTAGE_SCALE1、Flash 等待周期设为FLASH_LATENCY_2APB1 二分频、APB2 一分频。该函数在系统启动早期被调用为内核与各外设提供稳定的 100MHz 时钟。内存布局与堆区board.h 定义了该 BSP 的内存布局FLASH 起始地址0x08000000大小 128KBSRAM 大小为 32KB结束地址0x20000000 32 * 1024堆区HEAP从镜像 ZI 段结束处开始MDK 下为Image$$RW_IRAM1$$ZI$$LimitIAR 下为CSTACK段尾GCC 下为__bss_end堆尾为 SRAM 末端STM32_SRAM_END即 RT-Thread 动态内存管理使用的全部可用 RAM 空间。工程与目录结构BSP 根目录提供了完整的工程文件与构建脚本IDE 工程project.uvprojx/project.uvoptMDK5、project.ewp/project.eww/project.ewdIAR另有对应的template.*模板工程构建脚本SConstruct/SConscriptSCons 构建、rtconfig.py构建配置、makefile.targets配置入口Kconfig 定义SOC_STM32F410RB与BOARD_STM32F410_NUCLEO两个隐式选项并依次加载 RT-Thread 内核配置、软件包配置与 STM32 公共库配置应用目录applications/main.c为用户入口main线程applications/arduino_pinout/为 RTduino 引脚映射支持板级目录board/下包含board.c、board.h、Kconfig以及CubeMX_Config/基于 STM32CubeMX 生成的初始化工程含.ioc文件和linker_scripts/GCC/IAR/MDK 三种链接脚本。注意事项编译前必须先执行pkgs --update拉取 STM32F4 HAL 库与 CMSIS 库否则工程无法通过编译工程默认使用 ST-LINK 下载与调试使用前请确认 PC 已安装对应的 ST-LINK 驱动串口参数固定为115200-8-1-N波特率 115200、8 位数据位、1 位停止位、无校验复位开发板后即可看到系统启动日志通过menuconfig修改配置后需要重新执行scons --targetmdk4/mdk5/iar重新生成工程再回到 IDE 中编译下载若开启 UART 的 DMA 收发功能需要先在菜单中确认RT_SERIAL_USING_DMA已被开启并在代码中正确配置 DMA 中断。维护信息本 BSP 由 tanglj86 维护邮箱 tanglj86gmail.com中英双语文档齐备仓库中还提供了对应的 英文版 README 供对照阅读。如果在使用过程中发现问题可以结合 STM32 系列 BSP 外设驱动使用教程 与 STM32_Nucleo-64_BSP_IntroductionNucleo-64 系列 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点击查看免费下载相关推荐使用 Faker::Music::GratefulDead 生成感恩而死乐队成员与曲目数据使用 Faker::Music::GratefulDead 生成感恩而死乐队成员与曲目数据 导读 本文介绍 Faker 项目中与 Grateful Dead感操作系统嵌入式物联网嵌入式OSRTOSRT-Thread STM32 Nucleo-64 BSP 开发指南板卡资源、快速上手与高级外设配置RT Thread STM32 Nucleo 64 BSP 开发指南板卡资源、快速上手与高级外设配置 本文围绕 RT Thread 官方为 STM32 Nuc操作系统嵌入式物联网嵌入式OSRTOSRT-Thread STM32F401 Nucleo-64 开发板 BSP 使用指南从快速上手到外设配置实战RT Thread STM32F401 Nucleo 64 开发板 BSP 使用指南从快速上手到外设配置实战 导读 本文围绕 RT Thread 开源仓库中操作系统嵌入式物联网嵌入式OSRTOS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表