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
1,671 每月下载量
在 6 个包中使用
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 引脚。它旨在提供舒适的用户界面,同时具有较低的开销,从而在不复杂化简单任务的情况下实现高频输出。
核心接口使用 GpioValue
和 GpioOut/
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
接口:更高频率的端口使用