STM32F103 开发板 Rust 语言教程
stm32f103-tutorial 项目地址: https://gitcode.com/gh_mirrors/st/stm32f103-tutorial
项目介绍
本项目是一个关于 STM32F103 开发板的使用案例,记录了一些使用 Rust 语言进行学习嵌入式开发的示例。该教程将主要根据 B 站江科大的视频教学进行学习 Rust 语言的嵌入式开发,示例中将会借用 B 站江科大视频配套资料中的一些资源进行展示。同时也会结合 stm32f1xx-hal
开发板库中的示例,进行整合在一起学习。
项目快速启动
环境准备
-
安装 Rust 工具链:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-
安装嵌入式开发工具链:
rustup target add thumbv7m-none-eabi
-
安装 OpenOCD 和 GDB:
sudo apt-get install openocd gdb-multiarch
克隆项目
git clone https://github.com/silent-rain/stm32f103-tutorial.git
cd stm32f103-tutorial
编译项目
cargo build
烧录程序
使用 OpenOCD 烧录程序到 STM32F103 开发板:
openocd -f interface/stlink.cfg -f target/stm32f1x.cfg -c "program target/thumbv7m-none-eabi/debug/stm32f103-tutorial verify reset exit"
应用案例和最佳实践
基础示例
Hello World
在 STM32F103 开发板上实现一个简单的 LED 闪烁程序:
#![no_std]
#![no_main]
use panic_halt as _;
use stm32f1xx_hal::{prelude::*, stm32};
#[entry]
fn main() -> ! {
let dp = stm32::Peripherals::take().unwrap();
let mut rcc = dp.RCC.constrain();
let mut gpioc = dp.GPIOC.split(&mut rcc.apb2);
let mut led = gpioc.pc13.into_push_pull_output(&mut gpioc.crh);
loop {
led.set_high().unwrap();
delay(1_000_000);
led.set_low().unwrap();
delay(1_000_000);
}
}
fn delay(mut count: u32) {
while count > 0 {
count -= 1;
}
}
最佳实践
- 使用
stm32f1xx-hal
库:该库提供了丰富的外设驱动,简化了开发过程。 - 模块化设计:将不同功能模块化,便于维护和扩展。
- 使用
defmt
进行调试:defmt
是一个轻量级的调试工具,适用于嵌入式系统。
典型生态项目
stm32f1xx-hal
stm32f1xx-hal
是一个基于 Rust 的 STM32F1 系列微控制器的硬件抽象层库。它提供了对 GPIO、UART、SPI、I2C 等外设的支持,是开发 STM32F1 系列项目的基础库。
cortex-m-rt
cortex-m-rt
是一个用于 Cortex-M 处理器的 Rust 运行时库,提供了启动代码和异常处理等功能。
defmt
defmt
是一个轻量级的调试工具,适用于嵌入式系统。它提供了格式化的日志输出功能,便于调试和分析。
通过这些生态项目的支持,开发者可以更高效地进行 STM32F103 开发板的嵌入式开发。
stm32f103-tutorial 项目地址: https://gitcode.com/gh_mirrors/st/stm32f103-tutorial
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考