ESP32 Rust开发环境搭建指南

简介

ESP32是一款功能强大的微控制器,而Rust作为一种安全、并发的系统编程语言,越来越受到嵌入式开发者的青睐。本文将详细介绍如何搭建ESP32的Rust开发环境,让你能够使用Rust语言开发ESP32项目。

环境搭建步骤

1. 安装Rust

首先,我们需要安装Rust编程语言。访问Rust官网,按照指引安装Rustup工具链管理器。

安装完成后,打开终端并运行以下命令来验证安装:

1
2
rustc --version
cargo --version

2. 安装ESP-RS工具链

ESP-RS是专门为ESP32开发的Rust工具链。使用以下命令安装:

1
2
cargo install espup
espup install

3. 配置环境变量

espup 会创建一个 export 文件,其中包含构建项目所需的一些环境变量。

在 Windows 系统上(%USERPROFILE%\export-esp.ps1)

  • 对于 Windows 用户,不需要 执行这个文件。这个文件只是用来展示哪些环境变量被修改了的。

在基于 Unix 的系统上($HOME/export-esp.sh),有几种不同的方法来 source 这个文件:

  • 在每个终端里 source 这个文件:

    1. source 这个 export 文件: . $HOME/export-esp.sh

    这种方法需要在每个新的 shell 里运行这个命令。

  • 创建用于执行 export-esp.sh 的别名(alias):

    1. 将以下命令复制粘贴到 shell 的配置文件中(.profile、.bashrc、.zprofile 等):alias get_esprs='. $HOME/export-esp.sh'
    2. 通过重启终端,或执行 source [配置文件的路径],例如 source ~/.bashrc,来刷新配置。

    这种方法需要在每个新的 shell 里运行别名(alias)。

  • 直接将环境变量添加到 shell 配置文件中:

    1. $HOME/export-esp.sh 的内容添加到 shell 的配置文件中:cat $HOME/export-esp.sh >> [配置文件的路径],例如 cat $HOME/export-esp.sh >> ~/.bashrc
    2. 通过重启终端,或执行 source [配置文件的路径],例如 source ~/.bashrc,来刷新配置。

    这种方法 不需要 任何 source。export-esp.sh 脚本会在每个 shell 里自动 source。

4. 安装额外工具

我们还需要安装一些额外的工具:

1
2
cargo install cargo-espflash
cargo install cargo-espmonitor

5. 创建新项目

现在我们可以创建一个新的ESP32 Rust项目了:

1
2
cargo new --bin my_esp32_project
cd my_esp32_project

6. 配置项目

编辑Cargo.toml文件,添加必要的依赖:

1
2
3
4
5
6
7
8
9
10
11
12
13
[package]
name = "my_esp32_project"
version = "0.1.0"
authors = ["Your Name <you@example.com>"]
edition = "2021"
license = "MIT OR Apache-2.0"

[dependencies]
hal = { package = "esp32-hal", version = "0.14.0" }
esp-backtrace = { version = "0.7.0", features = ["esp32", "panic-handler", "print-uart"] }

[build-dependencies]
embuild = "0.31.2"

7. 编写示例代码

src/main.rs中编写一个简单的LED闪烁程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#![no_std]
#![no_main]

use esp32_hal::{clock::ClockControl, gpio::IO, peripherals::Peripherals, prelude::*, timer::TimerGroup, Delay, Rtc};
use esp_backtrace as _;

#[entry]
fn main() -> ! {
let peripherals = Peripherals::take().unwrap();
let system = peripherals.DPORT.split();
let clocks = ClockControl::boot_defaults(system.clock_control).freeze();

let timer_group0 = TimerGroup::new(peripherals.TIMG0, &clocks);
let mut timer0 = timer_group0.timer0;
let mut rtc = Rtc::new(peripherals.RTC_CNTL);

let io = IO::new(peripherals.GPIO, peripherals.IO_MUX);
let mut led = io.pins.gpio2.into_push_pull_output();

loop {
led.set_high().unwrap();
timer0.delay_ms(500u32);
led.set_low().unwrap();
timer0.delay_ms(500u32);
}
}

8. 编译和烧录

使用以下命令编译和烧录程序到ESP32:

1
2
cargo build
cargo espflash flash --monitor

开发流程图

结论

通过以上步骤,我们成功搭建了ESP32的Rust开发环境。这为我们使用Rust语言开发ESP32项目提供了坚实的基础。随着ESP-RS生态系统的不断发展,相信未来会有更多强大的工具和库来支持ESP32的Rust开发。

参考资源

  1. ESP-RS官方文档
  2. Rust编程语言官网
  3. ESP32官方文档

希望这篇文章能帮助你顺利搭建ESP32的Rust开发环境。如果在过程中遇到任何问题,欢迎查阅官方文档或在社区中寻求帮助。祝你的ESP32 Rust开发之旅愉快!