esp32-rust-std-examples-blinky

以下为在 ESP-IDF (FreeRTOS) 上运行的 blinky 示例:

https://github.com/esp-rs/esp-idf-hal/blob/master/examples/blinky.rs

rust 复制代码
//! Blinks an LED
//!
//! This assumes that a LED is connected to GPIO4.
//! Depending on your target and the board you are using you should change the pin.
//! If your board doesn't have on-board LEDs don't forget to add an appropriate resistor.
//!

use esp_idf_hal::delay::FreeRtos; // 导入延迟函数的库
use esp_idf_hal::gpio::*; // 导入GPIO库
use esp_idf_hal::peripherals::Peripherals; // 导入外设库

/*
* fn main() -> anyhow::Result<()> 是程序的入口点,也就是程序开始执行的地方。在Rust语言中,每个可执行程序都必须包含一个main函数作为程序的入口。
* 
* fn:这是Rust中定义函数的关键字。
* main():函数名为main,这是Rust中约定俗成的用于表示程序入口的函数名。
* -> anyhow::Result<()>:箭头后面的部分表示函数的返回类型。在这里,anyhow::Result<()> 表示这个函数返回一个 Result 类型。anyhow 是一个用于错误处理的库,Result 是一个枚举类型,可以表示操作成功(Ok)或操作失败(Err)。() 表示空元组,即没有特定的值需要返回。所以,这个函数返回一个可能包含成功或失败信息的 Result。
* 在这个特定的例子中,main 函数的返回类型为 Result,表明它可能会返回错误信息,但是由于注释的规定,我们无法在这个上下文中提供详细的错误信息。通常情况下,如果程序执行成功,main 函数会返回一个 Ok(()),如果出现错误,它会返回一个 Err,其中包含了错误的信息。
*/

fn main() -> anyhow::Result<()> {
    // 链接ESP-IDF所需的补丁
    esp_idf_sys::link_patches();

    // 初始化外设
    let peripherals = Peripherals::take().unwrap();

    // 创建一个可输出的引脚驱动实例,将其设置为 GPIO4 引脚的输出模式
    let mut led = PinDriver::output(peripherals.pins.gpio4)?;

    println!("Hello world!"); // 打印"Hello world!"到终端

    // 设置一个每 1000 毫秒即切换 LED 开/关状态的无限循环
    loop {
        led.set_high()?; // 将LED引脚设置为高电平(LED开启状态)
        // 在这里进行延迟,以确保不触发看门狗
        FreeRtos::delay_ms(1000); // 延迟1秒

        led.set_low()?; // 将LED引脚设置为低电平(LED关闭状态)
        FreeRtos::delay_ms(1000); // 延迟1秒
    }
}

更多示例存放在 esp-idf-hal 仓库中:

https://github.com/esp-rs/esp-idf-hal/

相关推荐
小二·42 分钟前
Rust 爬虫与数据处理实战:大规模并发抓取 + 流式处理
开发语言·爬虫·rust
欢乐熊嵌入式编程1 小时前
选型避坑:ESP32 vs STM32+模组 vs NB-IoT,不同场景怎么选
stm32·单片机·嵌入式硬件·物联网·esp32·嵌入式iot
ServBay14 小时前
别再用初级写法写Rust了,8个写法你值得拥有
后端·rust
望眼欲穿的程序猿18 小时前
Hello World
嵌入式硬件·rust
望眼欲穿的程序猿21 小时前
按键控制 LED
嵌入式硬件·rust
ai安歌1 天前
鸿蒙PC:Linux 搭建 Rust 开发环境并实现计算器项目
linux·rust·harmonyos
星栈1 天前
一套 Rust 代码跑三端:为什么我开始关注 Dioxus
前端·rust·前端框架
不良使1 天前
鸿蒙PC迁移_LocalSend 迁移到鸿蒙 PC:一次 Flutter + Rust + 三方库适配的完整记录
flutter·rust·harmonyos
欢乐熊嵌入式编程1 天前
WIFI通信协议全解析18: ESP32 作为 AP 热点:打造自己的“微型路由器”(附完整实战代码)
物联网·wifi·esp32·蓝牙·wifi协议·ap热点
红尘散仙1 天前
别再手动录屏了:用 VHS 给终端应用生成会动的文档素材
后端·rust