3个版本 (1个稳定版)
1.0.0 | 2024年1月19日 |
---|---|
0.2.0 | 2022年2月18日 |
0.1.0 | 2022年2月17日 |
#1815 in 嵌入式开发
用于 quectel-bg77
12KB
60 行
倒置输入/输出引脚实现
这提供了带有倒置逻辑的输入/输出引脚 embedded-hal
特质的实现。
例如,一个 InvertedPin
可以包裹一个 OutputPin
,并在将其设置为低时,将包裹的 OutputPin
设置为高。对于 InputPin
也是类似的。
当处理与系统其他部分预期逻辑相反的引脚时,这很有用。
由于 InvertedPin
实现了 OutputPin
和 InputPin
特质,它可以像任何其他 OutputPin
或 InputPin
一样使用,并作为包裹引脚的直接替换。
用法
以下示例演示了同一个驱动程序如何使用正常或倒置输出引脚。
use embedded_hal::digital::OutputPin;
use inverted_pin::InvertedPin;
use linux_embedded_hal::SysfsPin;
struct Driver<P> {
output: P,
}
impl<P, E> Driver<P>
where
P: OutputPin<Error = E>,
{
fn new(pin: P) -> Self {
Driver { output: pin }
}
fn do_something(&mut self) -> Result<(), E> {
// ...
self.output.set_high()
}
fn destroy(self) -> P {
self.output
}
}
fn main() {
// The same driver can operate with either a normal or an inverted pin.
let real_pin = SysfsPin::new(25);
let mut driver_with_real_pin = Driver::new(real_pin);
driver_with_real_pin.do_something().unwrap();
let real_pin = driver_with_real_pin.destroy();
let inverted_pin = InvertedPin::new(real_pin);
let mut driver_with_inverted_pin = Driver::new(inverted_pin);
driver_with_inverted_pin.do_something().unwrap();
}
支持
有关问题、问题、功能请求和其他更改,请在 github 项目中提交 问题。
许可
许可协议为以下之一
- Apache许可证版本2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非你明确声明,否则任何有意提交以包含在你提交的工作中的贡献,根据 Apache-2.0 许可证定义,应如上所述双重许可,无需任何额外的条款或条件。
依赖
~56KB