#gpio #raspberry-pi #bare-metal #ruspiro

nightly no-std ruspiro-gpio

这个crate提供了Raspberry Pi的GPIO外设抽象

8个版本 (4个破坏性更新)

0.4.3 2021年9月6日
0.4.2 2021年5月1日
0.4.1 2020年9月12日
0.4.0 2020年1月3日
0.0.2 2019年7月29日

#1998 in 嵌入式开发

Download history 12/week @ 2024-03-14 3/week @ 2024-03-21 21/week @ 2024-03-28 9/week @ 2024-04-04 4/week @ 2024-04-25 2/week @ 2024-05-02 2/week @ 2024-05-09 2/week @ 2024-05-16 2/week @ 2024-05-23 5/week @ 2024-05-30

每月下载量:122
3 crate 中使用

Apache-2.0

38KB
614

RusPiRo GPIO访问抽象,适用于Raspberry Pi

此crate提供了一个简单易用且安全的GPIO外设抽象,适用于Raspberry Pi 3。GPIO配置需要访问具有特定内存基址的MMIO寄存器。由于这可能在不同的型号之间有所不同,因此编译时根据提供的 ruspiro_pi3 功能选择正确的地址。

CI Latest Version Documentation License

用法

要使用此crate,只需将以下依赖项添加到您的 Cargo.toml 文件中

[dependencies]
ruspiro-gpio = "0.4.3"

完成后,GPIO抽象的访问将在您的rust文件中可用,如下所示

use ruspiro_gpio::GPIO;

fn demo() {
    // "grab" the GPIO in a safe way and use the provided closure to work with it
    // as long as the closure is executed, no other core can access the GPIO to configure pins etc.
    GPIO.with_mut(|gpio| {
        // retrieving a pin gives a Result<>. If the pin is not already taken it returns an Ok()
        // with the pin.
        if let Ok(pin) = gpio.get_pin(17) {
            // as we have now access to the pin, configure it as output and set it to high
            // to lit a connected LED
            pin.to_output().high();
        }
    })
}

使用提示

GPIO crate通过一个 Singleton 提供对外设的访问,以确保从Raspberry Pi的每个核心对它进行安全访问。此 Singleton 使用锁和原子操作来保护访问。这些原子操作仅在Raspberry Pi上(如果MMU已配置并激活(具有活动缓存))才有效。因此,要在项目中正确使用此crate,请检查ruspiro-mmu crate以及如何配置和激活MMU。

许可证

根据Apache License,版本2.0(LICENSE-APACHEhttps://apache.ac.cn/licenses/LICENSE-2.0)或MIT(LICENSE-MIThttp://opensource.org/licenses/MIT)进行许可,任选其一。

依赖项

~1.5MB
~39K SLoC