ITPub博客

首页 > 数据库 > 数据库开发技术 > Esp32 Rust环境搭建

Esp32 Rust环境搭建

原创 数据库开发技术 作者:Rust嵌入式 时间:2024-05-05 12:04:04 0 删除 编辑

这篇文章,主要介绍搭建ESP32 Rust的开发环境,本文以Mac系统下为例。

命令安装

  1. 安装Rust
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
  1. 安装Rust工具链
rustup default stable    
  1. 安装 cargo generate 命令
brew install openssl && cargo install cargo-generate
  1. 安装 esp下载工具
cargo install espflash      

Vscode 扩展插件

  1. rust-analyzer

提供Rust语法分析,代码补全提示,代码跳转、代码提示等功能。

  1. Even Batter Toml

提供 Toml文件中crate依赖分析,检查版本更新情况,高亮显示Toml格式。

从官方模板新建

cargo generate esp-rs/esp-template

根据提示选择合适的配置即可。使用Vscode编辑和运行,运行命令:cargo run测试一个简单的汉娜塔的问题:

#![no_std]
#![no_main]

use esp_backtrace as _;
use esp_hal::{clock::ClockControl, delay::Delay, peripherals::Peripherals, prelude::*};

static mut CNT: usize = 0;

fn n_move(n: u32, a: char, b: char) {
    // log::info!("move: {} from {} to {}", n, a, b);
    unsafe {
        CNT += 1;
    }
}

fn hannoi(n: u32, a: char, b: char, c: char) {
    if n == 1 {
        n_move(n, a, c);
    } else {
        hannoi(n - 1, a, c, b);
        n_move(n, a, c);
        hannoi(n - 1, b, a, c);
    }
}
#[entry]
fn main() -> ! {
    let peripherals = Peripherals::take();
    let system = peripherals.SYSTEM.split();

    let clocks = ClockControl::max(system.clock_control).freeze();
    let delay = Delay::new(&clocks);

    esp_println::logger::init_logger_from_env();

    let n: u32 = 24;
    hannoi(n, 'a', 'b', 'c');
    log::info!("hannoi {} need move {} times", n, unsafe { CNT });

    loop {
        delay.delay(500.millis());
    }
}

计算一个N为24时,不到4秒即完成计算。



原文作者:Rust嵌入式;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2023-11-13

  • 博文量
    64
  • 访问量
    45582