当前位置: 首页 > news >正文

esp32-rust-std-examples-blinky

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

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

//! 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/

http://www.lryc.cn/news/227748.html

相关文章:

  • 【docker容器技术与K8s】
  • RT-DTER 引入用于低分辨率图像和小物体的新 CNN 模块 SPD-Conv
  • Folw + Room 实现自动观察数据库的刷新
  • 黑马程序员微服务Docker实用篇
  • 虚拟化服务器+华为防火墙+kiwi_syslog访问留痕
  • FlinkSQL聚合函数(Aggregate Function)详解
  • TensorFlow学习笔记--(3)张量的常用运算函数
  • RT-Thread:嵌入式实时操作系统的设计与应用
  • SpringBoot学习笔记-创建菜单与游戏页面(下)
  • STM32一
  • GPT-4 Turbo Assistants API
  • day08_回顾与课程概括
  • iptables、netfilter、firewalld、ufd简单介绍
  • Python基础入门例程53-NP53 前10个偶数(循环语句)
  • v-bind和v-model
  • Adobe premiere裁剪视频尺寸并转为GIF格式
  • 关于react输入框回显问题
  • 案例续集留言板
  • 72 内网安全-域横向CSMSF联动及应急响应初识
  • Leetcode—20.有效的括号【简单】
  • Leetcode—剑指OfferII LCR 019.验证回文串II【简单】
  • Mac电脑配置Flutter开发环境
  • QTableView如何清空数据保留表头
  • [工业自动化-17]:西门子S7-15xxx编程 - 软件编程 - PLC编程语言以及与嵌入式编程的比较
  • 云原生微服务架构及实现技术
  • Uniapp语言切换动态修改Js文件
  • GetSimple CMS忘记密码
  • 数据分析面试题1
  • 数据跨领域应用实例—车辆通行大数据应用场景(二)
  • Dart笔记:build_runner-用于 Dart 代码生成和模块化编译的构建系统