#hal #embedded-hal-driver #linux #driver #apu

apu_pcengines_hal

APU2+硬件直接内存接口的安全包装

1 个不稳定版本

0.1.0 2020年9月22日

#785 in 嵌入式开发

MIT/Apache

14KB
263

apu_pcengines_hal

APU2+硬件直接内存接口的安全包装。

安装

使用cargo(或rustup)从git安装

sudo apt install build-essential
git clone https://gitlab.com/dns2utf8/apu_pcengines_hal.git
cargo build --release --example leds
sudo ./target/release/examples/leds

从gitlab下载nightly版本

CI在每个提交时在main分支上构建二进制文件。您可以从https://dns2utf8.gitlab.io/apu_pcengines_hal/leds下载leds示例程序或使用以下命令

wget https://dns2utf8.gitlab.io/apu_pcengines_hal/leds
sudo ./leds

lib.rs:

APU2+硬件直接内存接口的安全包装。

这是一个针对原始指针的零成本抽象。为了符合Rust的安全性,存在运行时检查,并且所有引脚都必须通过Mapping::free_pin返回

use apu_pcengines_hal::{MappingResult, APU_LED1, APU_LED2, APU_LED3};

fn main() -> MappingResult<()> {
    let mut map = apu_pcengines_hal::init()?;

    println!("init done: {:?}", map);

    let led2 = map.get_pin(APU_LED2)?;
    println!("led2: {:?}", led2);
    
    let mut led2 = led2.into_input();
    let val = led2.get();
    println!("led2: {:?} = {}", led2, val);
    
    let mut led2 = led2.into_output();
    println!("led2: {:?}", led2);
    led2.set(!val);
    
    map.free_pin(led2);
    Ok(())
}

依赖关系

~43KB