Rust编程基础课 第1课时:Rust简介与环境搭建 STM32 RUST嵌入式编程实战

第1课时:Rust简介与环境搭建

文章目录

本课时作为基于STM32的Rust编程基础的开篇,核心围绕Rust简介与开发环境搭建展开,为后续学习奠定基础。首先介绍了Rust语言的核心定位与优势,明确其作为系统级语言,凭借内存安全、无GC、零成本抽象等特性,非常适配STM32嵌入式开发场景,能有效解决传统C/C++开发中的内存漏洞问题,同时保留高性能,适合工业控制、IoT等嵌入式应用。

实操部分重点讲解了Rust官方工具链的全平台安装方法,通过统一的官方脚本,无需复杂配置即可完成rustup、rustc、cargo的安装,同时详细说明环境生效的方法和验证步骤,确保每个学员都能完成基础环境搭建。针对STM32嵌入式开发,补充了交叉编译工具链和调试工具的安装,适配Cortex-M3内核的STM32F103开发板,讲解了ST-Link调试器的连接与验证方法,完成嵌入式开发环境的适配。

通过实战演示运行Hello World程序,让学员直观感受Rust开发的便捷性,同时布置课后作业,巩固环境搭建的核心步骤,培养问题排查能力。本课时的重点是掌握环境搭建的流程和验证方法,难点在于Windows系统环境变量生效和调试工具的配置,学员需重点关注安装过程中的提示信息,及时解决遇到的问题。通过本课时的学习,学员已具备Rust基础开发环境和STM32适配环境,为后续Rust语法学习和STM32外设实操做好了充分准备。

一、课程目标

  • 了解Rust语言的核心定位、优势及嵌入式应用场景,明确学习意义

  • 掌握Rust官方工具链(rustup、rustc、cargo)的全平台安装方法

  • 完成STM32 Rust开发环境的适配(工具补充、调试环境配置)

  • 验证环境搭建成功,运行第一个基础Rust程序,建立学习信心

二、课程重难点

  • 重点:Rust工具链安装(全平台通用)、STM32开发环境适配

  • 难点:Windows系统环境变量生效、STM32调试工具(probe-rs)配置

三、课程内容

3.1 Rust简介

3.1.1 Rust是什么

Rust是一门静态强类型、无GC(垃圾回收)、专注于内存安全、零成本抽象、无畏并发的系统级编程语言,由Graydon Hoare于2006年发起,后由Mozilla赞助,2015年发布1.0稳定版,目前由Rust基金会独立治理。

核心设计目标:解决C/C++的内存安全问题(如野指针、缓冲区溢出、数据竞争),同时保留接近C/C++的高性能,无需GC即可实现内存安全,适配嵌入式、系统开发、区块链等场景。

3.1.2 Rust核心优势(贴合嵌入式场景)
  • 内存安全:通过所有权、借用、生命周期三大机制,编译期杜绝内存漏洞,降低嵌入式设备死机、数据错乱风险

  • 零成本抽象:高级语法编译后与底层代码性能一致,不增加额外开销,适配STM32等资源有限的嵌入式设备

  • 无GC:编译期管理内存,无运行时GC停顿,适合硬实时、低功耗嵌入式场景(如工业控制、IoT设备)

  • 与C/C++无缝互操作:可增量替换STM32现有C/C++代码,无需推倒重来,降低迁移成本

  • 工具链完善:cargo(包管理)、probe-rs(嵌入式调试)、defmt(嵌入式日志),提升开发效率

3.1.3 Rust在STM32中的应用场景
  1. 工业控制:STM32单片机的控制逻辑、外设驱动开发,保证高稳定性和安全性

  2. IoT设备:低功耗传感器节点、数据采集模块,无GC特性适配长续航需求

  3. 安全关键场景:医疗设备、汽车电子(如ECU),编译期安全检查降低故障风险

  4. 高性能场景:STM32的高速外设控制、数据处理,零成本抽象提升运行效率

3.2 Rust工具链安装

核心工具链组成:rustup(版本管理器)、rustc(编译器)、cargo(包管理器),统一通过官方脚本安装,避免手动配置环境变量的繁琐操作。

3.2.1 准备工作
  • Windows:打开PowerShell(管理员模式或普通模式均可),确保网络通畅,关闭杀毒软件(避免拦截安装脚本)

  • macOS:打开终端,确保已安装Xcode Command Line Tools(输入xcode-select --install可安装)

  • Linux:打开终端,确保已安装curl(输入sudo apt install curl -y,Ubuntu/Debian系统)

3.2.2 执行安装命令

⚠️ 注意:不要手动下载安装包,仅使用以下官方脚本,自动适配系统并安装。

  • Windows(PowerShell输入):
cmd 复制代码
bitsadmin /transfer rustup-init https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-msvc/rustup-init.exe %temp%\rustup-init.exe && %temp%\rustup-init.exe
  • macOS / Linux(终端输入):
bash 复制代码
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
3.2.3 安装过程配置

运行命令后,终端会出现如下选项,直接输入"1"并回车,全程默认安装即可(新手无需自定义配置):

bash 复制代码
1) Proceed with installation (default)
2) Customize installation
3) Cancel installation

安装过程约3-5分钟(取决于网络速度),安装完成后会提示"Rust is installed now. Great!"。

3.2.4 环境生效与验证
  1. 环境生效:安装完成后,关闭当前终端,重新打开一个新终端(环境变量自动生效,无需手动配置)。

可选(手动生效):

  • macOS/Linux:终端输入 source $HOME/.cargo/env

  • Windows:无需手动操作,重启PowerShell即可

  1. 验证安装:输入以下两条命令,若能显示版本号,说明Rust工具链安装成功(版本号可能不同,不影响使用):
bash 复制代码
rustc --version
cargo --version

成功示例:

bash 复制代码
rustc 1.94.0
cargo 1.94.0

3.3 STM32 Rust开发环境适配

在基础Rust环境上,补充嵌入式开发所需工具,适配STM32单片机(以STM32F103为例)。

3.3.1 安装嵌入式工具链组件

终端输入以下命令,安装STM32所需的交叉编译工具链和调试工具:

bash 复制代码
rustup target add thumbv7m-none-eabi  # 适配STM32F103等Cortex-M3内核
cargo install cargo-flash cargo-embed probe-rs-cli  # 烧录、调试工具
3.3.2 调试环境配置
  • 硬件准备:STM32开发板(如STM32F103C8T6)、USB转串口模块、SWD调试器(如ST-Link)

  • 驱动安装:Windows系统需安装ST-Link驱动(可从ST官网下载),macOS/Linux无需额外安装驱动

  • 验证调试工具:将ST-Link连接开发板和电脑,终端输入 probe-rs list,若能识别到调试器,说明配置成功。

3.4 实战演示:运行第一个Rust程序

通过简单程序验证环境,为后续STM32开发铺垫。

bash 复制代码
# 1. 创建基础Rust项目
cargo new hello_rust
cd hello_rust

# 2. 运行程序
cargo run

运行成功后,终端输出 Hello, world!,说明基础环境完全正常。

四、课堂示例(可直接复制运行)

示例1:基础Hello World程序(验证基础环境)

rust 复制代码
// src/main.rs
fn main() {
    // 打印基础信息,适配终端输出
    println!("Hello, Rust!");
    println!("Rust工具链版本:rustc 1.94.0");
    println!("准备开启STM32 Rust编程之旅!");
}

运行命令:cargo run,查看终端输出结果。

示例2:验证嵌入式工具链(STM32适配测试)

bash 复制代码
# 查看已安装的交叉编译目标
rustup target list --installed

# 验证probe-rs调试工具
probe-rs list

预期结果:能看到 thumbv7m-none-eabi 和连接的ST-Link调试器。

五、课后作业(巩固练习)

    1. 完成全平台Rust工具链安装,截图保存 rustc --versioncargo --version 的运行结果。
    1. 安装STM32适配工具(cross、cargo-flash、probe-rs),截图保存probe-rs list 的运行结果(连接ST-Link)。
    1. 创建并运行示例1的Hello World程序,修改打印内容为"STM32 Rust第1课时作业",截图保存运行结果。
    1. 记录安装过程中遇到的问题(如环境生效失败、调试器识别不到),尝试自行排查并记录解决方法。

六、课程总结

  • 核心知识点:Rust语言定位、核心优势(内存安全、无GC、零成本抽象),STM32应用场景。

  • 实操重点:Rust工具链安装(全平台通用命令)、环境生效验证、STM32嵌入式工具补充配置。

  • 关键结论:Rust工具链是嵌入式开发的基础,STM32适配需补充交叉编译和调试工具,环境验证是后续实操的前提。

七、课程关键词(重点记忆)

  • Rust工具链、rustup、cargo

  • STM32 Rust适配、probe-rs

  • 交叉编译、调试环境

  • Hello World、环境验证

Rust编程基础课 第2课时:Rust基础语法(变量、数据类型、运算符)

相关推荐
少年、潜行2 小时前
【代码开源】基于STM32的智能路灯控制系统设计
stm32·嵌入式硬件·开源·智能路灯
wotaifuzao4 小时前
深度解析:NFC、UWB与BLE技术的演进、核心技术与“无感交互“融合应用展望
嵌入式硬件·交互·ble·uwb·nfc·数字钥匙
修勾勾L4 小时前
OneNet平台生成token注意事项
stm32·物联网
玩转单片机与嵌入式10 小时前
一个成熟的嵌入式AI系统,是长什么样子的?
人工智能·单片机·嵌入式硬件·嵌入式ai
玩转单片机与嵌入式14 小时前
不会 Python、不会深度学习,也能在STM32上跑AI模型吗?
人工智能·单片机·嵌入式硬件·嵌入式ai
jghhh0115 小时前
基于STM32的桌面Mini时钟设计
stm32·单片机·嵌入式硬件
电化学仪器白超16 小时前
小乌龟Git全程图形化操作指南:嵌入式本地版本管理与Gitee私有云备份实战
git·python·单片机·嵌入式硬件·物联网·gitee·自动化
yong999017 小时前
基于STM32 Nucleo板的彩色LED照明灯设计(纯CubeMX开发)
stm32·单片机·嵌入式硬件
独小乐17 小时前
019.ADC转换和子中断|千篇笔记实现嵌入式全栈/裸机篇
linux·c语言·驱动开发·笔记·嵌入式硬件·mcu·arm