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 嵌入式开发

Download history 5622/week @ 2024-04-22 4839/week @ 2024-04-29 3404/week @ 2024-05-06 4364/week @ 2024-05-13 4905/week @ 2024-05-20 4553/week @ 2024-05-27 4311/week @ 2024-06-03 4197/week @ 2024-06-10 3805/week @ 2024-06-17 4129/week @ 2024-06-24 3159/week @ 2024-07-01 3550/week @ 2024-07-08 3892/week @ 2024-07-15 5248/week @ 2024-07-22 4343/week @ 2024-07-29 5017/week @ 2024-08-05

18,712 每月下载量
用于 48 个crate(17个直接使用)

MIT/Apache

33KB
479 代码行

sysfs_gpio

Build Status Version Minimum Supported Rust Version License

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轮询
  • 支持使用miotokio进行异步轮询(分别需要启用mio-eventedasync-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-2.0许可证定义的,你有意提交以包含在本工作中的任何贡献,都将按照上述方式双许可,不附加任何额外条款或条件。

行为准则

对本软件包的贡献是在Rust行为准则的条款下组织的,本软件包的维护者、嵌入式Linux团队承诺将介入以维护该行为准则。

依赖项

~2–11MB
~97K SLoC