2 个不稳定版本
0.2.0 | 2023年4月18日 |
---|---|
0.1.0 | 2020年8月12日 |
#433 in 嵌入式开发
每月 40 次下载
39KB
391 行
unflappable
快速入门
将以下内容添加到您的 Cargo.toml
[dependencies]
unflappable = "0.2"
在静态存储中创建一个未初始化的 Debouncer
。
use unflappable::{debouncer_uninit, Debouncer, default::ActiveLow};
static DEBOUNCER: Debouncer<PinType, ActiveLow> = debouncer_uninit!();
使用您的输入引脚初始化 Debouncer
,返回 Debounced
引脚。就像使用其他任何 InputPin
一样使用此引脚,例如将其所有权传递给另一个抽象。
let debounced_pin = unsafe { DEBOUNCER.init(input_pin) }?;
定期轮询 Debouncer
,例如在中断服务例程中。
unsafe {
DEBOUNCER.poll()?;
}
文档
API 文档
API 文档托管在 docs.rs 上
最低支持的 Rust 版本
此软件包使用 const fn
上的特征界限,需要 Rust 1.61。
与其他消抖软件包的比较
至少有三个针对嵌入式 Rust 开发的消抖软件包。这个与其他软件包相比如何?
- 软件包:
unflappable
- 包装
InputPin
:是 - 可以移动包装的引脚:是
- 算法:基于 Kuhn 的积分
- 状态开销:
u8
- 包装
- 软件包:
debounced-pin
- 包装
InputPin
:是 - 可以移动包装的引脚:否
- 算法:基于 Greensted 的微分
- 状态开销:
u8
+enum
- 包装
- 软件包:
debouncr
- 包装
InputPin
:否 - 可以移动包装的引脚:N/A
- 算法:基于 Ganssle 的微分
- 状态开销:
u8
- 包装
- 软件包:
debouncing
- 包装
InputPin
:否 - 可以移动包装的引脚:N/A
- 算法:基于 Hackaday 的微分
- 状态开销:
u8 + 动态分配的
Vec
- 包装
贡献
我很高兴看到任何形式的贡献,包括错误报告、可用性建议、补丁,或者愤怒但善意地批评。鼓励您向官方的 问题跟踪器 报告问题,并将任何问题或补丁发送到 邮件列表。向 GitHub 镜像提交的拉取请求也是可接受的。
依赖项
~71KB