5 个不稳定版本

使用旧的 Rust 2015

0.4.1 2018年3月13日
0.4.0 2018年3月4日
0.3.0 2017年6月16日
0.2.1 2017年6月16日
0.2.0 2017年6月14日

嵌入式开发 中排名 #1780

Download history 150/week @ 2024-03-13 280/week @ 2024-03-20 318/week @ 2024-03-27 232/week @ 2024-04-03 187/week @ 2024-04-10 256/week @ 2024-04-17 278/week @ 2024-04-24 231/week @ 2024-05-01 214/week @ 2024-05-08 274/week @ 2024-05-15 412/week @ 2024-05-22 359/week @ 2024-05-29 620/week @ 2024-06-05 337/week @ 2024-06-12 217/week @ 2024-06-19 391/week @ 2024-06-26

1,671 每月下载量
6 个包中使用

MIT 许可证

13KB
233

Rust GPIO

通过 sysfs 和直接内存访问处理 Linux 和裸金属嵌入式系统上的 GPIO 访问。在稳定的 Rust 上运行。

路线图

  • GPIO 写支持
  • 读支持
  • 中断支持

其他库

其他库可以在 crates.io 上找到 [链接]。其中包括

  • sysfs_gpio <https://github.com/rust-embedded/rust-sysfs-gpio>仅通过 SysFS 处理 GPIO,但公开所有功能。略低级。

  • cylus <https://github.com/Vikaton/cylus>文档已失效,执行了一些可疑的操作,如 unwrapping()

  • cupi <https://github.com/cuprumpi/cupi>最全面的 GPIO 库,包括 gpio 计划中的几乎所有功能。不使用 volatile。

    待办:基准测试


lib.rs:

GPIO 接口

GPIO 包允许轻松且快速地访问 GPIO 引脚。它旨在提供舒适的用户界面,同时具有较低的开销,从而在不复杂化简单任务的情况下实现高频输出。

核心接口使用 GpioValueGpioOut/GpioIn 特性定义。所有后端都至少实现了这些特性中的一些,使它们可以互换,例如用于测试。

最常用的实现基于 Linux GPIO Sysfs 接口,位于 sysfs 包中。

示例

use gpio::{GpioIn, GpioOut};
use std::{thread, time};

// Let's open GPIO23 and -24, e.g. on a Raspberry Pi 2.
let mut gpio23 = gpio::sysfs::SysFsGpioInput::open(23).unwrap();
let mut gpio24 = gpio::sysfs::SysFsGpioOutput::open(24).unwrap();

// GPIO24 will be toggled every second in the background by a different thread
let mut value = false;
thread::spawn(move || loop {
    gpio24.set_value(value).expect("could not set gpio24");
    thread::sleep(time::Duration::from_millis(1000));
    value = !value;
});

// The main thread will simply display the current value of GPIO23 every 100ms.
loop {
    println!("GPIO23: {:?}", gpio23.read_value().unwrap());
    thread::sleep(time::Duration::from_millis(100));
}

待办

  • /dev/mem 接口:更高频率的端口使用

无运行时依赖项