# stm32_f407_rust_demo **Repository Path**: maybe_404/stm32_f407_rust_demo ## Basic Information - **Project Name**: stm32_f407_rust_demo - **Description**: 点灯 - **Primary Language**: Rust - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-11 - **Last Updated**: 2025-12-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # STM32 F407VET6 Rust示例工程 这是一个基于Rust语言的STM32 F407VET6开发板示例工程,实现了LED闪烁和JLink RTT日志输出功能。 ## 项目概述 本工程使用Rust语言和STM32F4xx HAL库开发,适用于STM32 F407VET6开发板。主要功能包括LED闪烁控制和JLink RTT日志输出。 ## 功能特点 - 控制STM32 F407VET6开发板上的三个LED灯(PE4, PA5, PB5) - 依次点亮每个LED,然后全部点亮,最后全部熄灭,循环执行 - 通过JLink RTT功能输出日志信息,显示LED的状态变化 - 使用25MHz外部时钟,系统时钟为168MHz - 支持开发版本和发布版本编译 ## 硬件要求 - STM32 F407VET6开发板 - JLink调试器 - 电脑 ## 软件要求 - Rust编译器(推荐1.89.0或更高版本) - Cargo构建工具 - arm-none-eabi-gcc工具链 - JLink软件包(包含JLink Commander、JFlash、JLink RTT Viewer等工具) ## 项目结构 ``` rust_stm32/ ├── src/ │ ├── main.rs # 主程序,实现LED闪烁和RTT日志 │ └── rtt.rs # RTT日志模块 ├── .cargo/ │ └── config.toml # Cargo配置文件 ├── Cargo.toml # 项目依赖配置 ├── memory.x # 内存布局配置 ├── openocd.cfg # OpenOCD配置文件 └── README.md # 项目说明文档 ``` ## 编译步骤 1. 克隆或下载本项目到本地 2. 进入项目目录 ```bash cd rust_stm32 ``` 3. 编译开发版本 ```bash cargo build ``` 4. 编译发布版本 ```bash cargo build --release ``` ## 生成固件文件 编译完成后,生成的ELF文件位于以下路径: - 开发版本:`target/thumbv7em-none-eabihf/debug/rust_stm32` - 发布版本:`target/thumbv7em-none-eabihf/release/rust_stm32` 可以使用以下命令生成BIN和HEX格式的固件文件: ### 生成BIN文件 ```bash arm-none-eabi-objcopy -O binary target/thumbv7em-none-eabihf/release/rust_stm32 target/thumbv7em-none-eabihf/release/rust_stm32.bin ``` ### 生成HEX文件 ```bash arm-none-eabi-objcopy -O ihex target/thumbv7em-none-eabihf/release/rust_stm32 target/thumbv7em-none-eabihf/release/rust_stm32.hex ``` ## 烧录步骤 ### 使用JFlash烧录 1. 打开JFlash软件 2. 在"New Project"向导中选择设备: - 设备系列:STM32F4xx - 设备型号:STM32F407VG - 接口:SWD - 速度:4000kHz 3. 点击"OK"创建项目 4. 在菜单栏选择"File" > "Open Data File" 5. 选择编译好的HEX文件:`target/thumbv7em-none-eabihf/release/rust_stm32.hex` 6. 点击工具栏上的"Erase Chip"按钮擦除芯片 7. 点击工具栏上的"Program Device"按钮烧录程序 8. 烧录完成后,点击工具栏上的"Reset Device"按钮复位设备 ## 查看RTT日志 1. 连接JLink调试器到STM32 F407VET6开发板和电脑 2. 打开JLink RTT Viewer工具 3. 在"New Connection"对话框中选择: - 设备:STM32F407VG - 接口:SWD - 速度:4000kHz 4. 点击"OK"连接设备 5. 复位或重新启动开发板,即可看到RTT日志输出 ## 代码说明 ### main.rs 主要实现了以下功能: - 初始化系统时钟(使用25MHz外部时钟,系统时钟为168MHz) - 初始化RTT日志功能 - 设置三个LED引脚(PE4, PA5, PB5)为输出 - 实现LED循环闪烁效果 - 通过RTT输出日志信息 ### rtt.rs 封装了RTT日志功能: - `rtt_log_init()`:初始化RTT日志 - `rtt_log_print(chx: u8, fmt: &str)`:打印日志信息到指定通道 ## 注意事项 1. 确保STM32 F407VET6开发板的外部时钟为25MHz 2. 连接JLink调试器时,确保SWDIO、SWCLK、GND和VCC引脚连接正确 3. 烧录前,确保开发板处于正确的烧录模式 4. 使用JLink RTT Viewer查看日志时,确保开发板已经正确连接 ## 许可证 本项目采用MIT许可证,详见LICENSE文件。 =======