1个不稳定版本
0.1.0 | 2023年9月11日 |
---|
#1180 in 嵌入式开发
7KB
50 行
嵌入式Rust共享引脚抽象
这是一个简单的嵌入式Rust应用程序抽象,用于在函数间共享引脚。它使用一个Rc<RefCell<Pin>>
来共享embedded_hal::digital::v2
引脚。
应该可以传递给任何期望OutputPin或InputPin的函数
示例
将此内容放入您的cargo.toml
[dependencies]
shared-bus = "0.1.0"
导入
use embedded_hal::digital::v2::OutputPin;
use shared_pin::SharedPin;
定义
pub fn do_something_with_the_cloned_pin<PIN>(pin: PIN)
where PIN: OuputPin
{
pin.set_high();
// ...
}
pub struct Device<PIN> {
pin: PIN,
}
impl<PIN> Device<PIN>
where
PIN: OutputPin {
pub fn new(pin: PIN) -> Self {
Self {
pin: PIN,
}
}
}
用法
{
let mut shared_output_pin_1 = SharedPin::new(output_pin);
let mut shared_output_pin_2 = shared_output_pin_1.clone();
let mut shared_output_pin_3 = shared_output_pin_1.clone();
do_something_with_the_cloned_pin(shared_output_pin_2);
let mut device = Device::new(shared_output_pin_3);
device.pin.set_low();
let mut shared_input_pin_1 = SharedPin::new(input_pin);
let mut shared_input_pin_2 = shared_input_pin_1.clone();
let mut shared_input_pin_3 = shared_input_pin_1.clone();
if shared_input_pin_3.is_low() {
// ...
}
}
待办事项
- 为freeRTOS免费提供线程安全
依赖关系
~71KB