#led #button #embedded-hal #embedded-hal-driver

no-std switch-hal

HAL 和基本实现,用于输入和输出开关(按钮、开关、LED、晶体管)

8 个版本

0.4.0 2021 年 6 月 15 日
0.3.3 2021 年 6 月 15 日
0.3.2 2020 年 2 月 15 日
0.2.1 2020 年 2 月 5 日
0.1.1 2020 年 2 月 4 日

#534嵌入式开发

Download history 110/week @ 2024-03-24 282/week @ 2024-03-31 95/week @ 2024-04-07 475/week @ 2024-04-14 193/week @ 2024-04-21 121/week @ 2024-04-28 84/week @ 2024-05-05 131/week @ 2024-05-12 83/week @ 2024-05-19 747/week @ 2024-05-26 263/week @ 2024-06-02 145/week @ 2024-06-09 135/week @ 2024-06-16 143/week @ 2024-06-23 90/week @ 2024-06-30 59/week @ 2024-07-07

每月 434 次下载
用于 6 个 Crates (5 直接)

MIT/Apache

22KB
287

switch-hal

Rust crates.io crates.io docs.rs

Switch-HAL 是一个 no_std 的嵌入式 Rust 库,用于处理按钮、开关、LED 和晶体管。基本上,任何类似开关的东西,无论是输入还是输出。

它既是一个使用 embedded-hal::digital 特性的驱动程序,也是它自己的抽象。它提供了一个简单、零成本的抽象,以阐明您应用程序代码的 意图

为什么选择 Switch-HAL?为什么不用原始 GPIO 呢?

您是想使该线路处于高电平吗?
还是您想 关闭 那个 LED?
等等……那个 LED 是 高电平有效 吗?
原理图在哪里?
好吧……阴极连接到输入线……这意味着它是低电平有效。

现在在每个需要打开或关闭该 LED 的代码位置重复此过程。
当硬件发生变化时会发生什么?
使用原始 GPIO 设置引脚高电平和低电平将需要在您的代码库中到处进行更改。

如果只需在初始化应用程序时考虑一次,那岂不是更好?
然后从那时起,只需调用 led.on()led.off()
在适当的级别上有一个抽象可以减少认知负荷。
在应用程序的单个位置指定一个简单的外围设备是高电平有效还是低电平有效可以减少维护负担。

文档

https://docs.rs/crate/switch-hal

或构建本地副本

cargo docs

然后在您的浏览器中打开 target/doc/switch_hal/index.html

许可证

根据以下任一许可证授权:

任选其一。

架构决策记录

主要设计决策记录在adr目录中。

变更日志

0.4.0

新增了StatefulOutputSwitch,感谢forkbomb9

0.3.3

更新嵌入式HAL到0.2.5版本

0.3.2

  • 添加了便利转换函数into_active_low_switch()into_active_high_switch()

0.3.1

  • 错误修复:is_active()对于Switch<InputPin, ActiveLow>返回错误的结果

依赖项

~71KB