11次发布
0.1.0-alpha.11 | 2023年6月9日 |
---|---|
0.1.0-alpha.9 | 2023年6月8日 |
0.1.0-alpha.8 | 2023年6月4日 |
0.1.0-alpha.7 | 2023年6月1日 |
0.1.0-alpha.3 | 2023年5月26日 |
#1247 in 硬件支持
37 每月下载量
用于 iso-tp
48KB
1K SLoC
async-hal
嵌入式设备的异步硬件抽象层
示例
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
:启用以下列出的所有功能,除了mock
和bxcan
。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