11次发布

0.1.0-alpha.112023年6月9日
0.1.0-alpha.92023年6月8日
0.1.0-alpha.82023年6月4日
0.1.0-alpha.72023年6月1日
0.1.0-alpha.32023年5月26日

#1247 in 硬件支持

37 每月下载量
用于 iso-tp

MIT/Apache

48KB
1K SLoC

async-hal

嵌入式设备的异步硬件抽象层

crate Rust Documentation CI

示例

Blinky

use async_hal::delay::DelayMs;

let mut led = _;
let mut timer = _;

loop {
    led.toggle();
    timer.delay_ms(1_000).await?;
}

串行端口环回

use async_hal::io;

let mut serial_tx = _;
let mut serial_rx = _;

loop {
    io::copy_buf(&mut serial_tx, &mut serial_rx).await?
}

lib.rs:

嵌入式设备的异步硬件抽象层。此crate提供异步IO的零成本实用工具。

提供了两种执行模型

  • 中断模式:每个中断可以使用一个Executor运行多个future。每个future在每个中断上都会被轮询,可以使用通道在它们之间进行通信。

  • 线程模式:中断唤醒主函数,其中使用block_on轮询future。

安装

开始的最简单方法是启用所有功能。

[dependencies]
async-hal = { version = "...", features = ["full"] }

或者使用cargo add

cargo add async-hal --features full

功能标志

Async-hal使用一组功能标志来减少编译代码的数量。可以选择只启用某些功能。默认情况下,async-hal不启用任何功能,但允许根据其使用情况启用子集。以下是可用的功能标志列表。您还可以注意,在每个函数、结构和特质上方列出了所需的一个或多个功能标志。如果您是async-hal的新手,建议您使用full功能标志,它将启用所有公共API。但请注意,这将引入许多额外的依赖项,您可能不需要。

  • full:启用以下列出的所有功能,除了mockbxcan
  • can:启用async_hal::can模块。
  • delay:启用async_hal::delay模块。
  • executor:启用 async_hal::executor 模块。
  • io:启用 async_hal::io 模块。
  • serial:启用 async_hal::serial 模块。
  • nb:为非阻塞接口启用异步包装器(例如来自 embedded_hal)。
  • bxcan:通过 bxcan 启用对具有 CAN 支持的 stm32 设备的支持。

依赖项

~0.9–1.2MB
~22K SLoC