21次发布
0.6.2 | 2024年5月13日 |
---|---|
0.6.1 | 2021年11月22日 |
0.6.0 | 2021年9月25日 |
0.5.4 | 2019年5月29日 |
0.2.0 | 2015年3月19日 |
#97 in 嵌入式开发
18,712 每月下载量
用于 48 个crate(17个直接使用)
33KB
479 代码行
sysfs_gpio
sysfs_gpio
crate提供对Linux sysfs GPIO接口的访问(https://www.kernel.org/doc/Documentation/gpio/sysfs.txt)。它旨在提供一个安全、方便且高效的API,并支持导出、取消导出、读取、写入和等待引脚上的中断。
许多设备,如树莓派或Beaglebone Black,为用户提供了对多个GPIO外设的访问。提供这些GPIO访问的标准内核API是通过sysfs实现的。
您还可能想查看gpio-utils项目,它提供了一种方便的方法来将名称与引脚关联,并在系统启动时将其导出。该项目使用此库。
安装/使用
要使用sysfs_gpio
,首先将以下内容添加到您的Cargo.toml
[dependencies]
sysfs_gpio = "0.6"
然后,将以下内容添加到您的crate根目录
use sysfs_gpio;
示例/API
LED闪烁
use sysfs_gpio::{Direction, Pin};
use std::thread::sleep;
use std::time::Duration;
fn main() {
let my_led = Pin::new(127); // number depends on chip, etc.
my_led.with_exported(|| {
my_led.set_direction(Direction::Out).unwrap();
loop {
my_led.set_value(0).unwrap();
sleep(Duration::from_millis(200));
my_led.set_value(1).unwrap();
sleep(Duration::from_millis(200));
}
}).unwrap();
}
更多示例
功能
以下功能计划纳入该库
- 支持导出GPIO
- 支持取消导出GPIO
- 支持设置GPIO的方向(输入/输出)
- 支持读取GPIO输入值
- 支持写入GPIO输出值
- 支持配置引脚是低电平有效还是高电平有效
- 支持配置GPIO上的中断
- 支持配置中断的GPIO轮询
- 支持使用
mio
或tokio
进行异步轮询(分别需要启用mio-evented
或async-tokio
crate功能)
最低支持的Rust版本(MSRV)
本软件包保证在稳定的Rust 1.65.0版本及以上编译。它可能在较旧版本中编译,但可能在任何新的补丁版本中发生变化。
交叉编译
你运行的机器很可能是你的开发机器(尽管也可能不是)。在这些情况下,你需要进行交叉编译。在rust-cross指南中提供了出色的、详细的交叉编译说明。
运行示例
可以通过指定一个适当的目标来执行交叉编译。然后,你可以通过任何方式将它们移动到您的设备上并运行。
$ cargo build --target=arm-unknown-linux-gnueabihf --example blinky
$ scp target/arm-unknown-linux-gnueabihf/debug/examples/blinky ...
许可证
许可协议为以下之一
- Apache License,版本2.0(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非你明确声明,否则根据Apache-2.0许可证定义的,你有意提交以包含在本工作中的任何贡献,都将按照上述方式双许可,不附加任何额外条款或条件。
行为准则
对本软件包的贡献是在Rust行为准则的条款下组织的,本软件包的维护者、嵌入式Linux团队承诺将介入以维护该行为准则。
依赖项
~2–11MB
~97K SLoC