use crate::pac::gpio::{Gpio, regs};
#[inline]
pub fn pin_is_high(port: Gpio, mask: u32) -> bool {
(port.idr().read().0) & mask != 0
}
#[inline]
pub fn pin_is_low(port: Gpio, mask: u32) -> bool {
(port.idr().read().0) & mask == 0
}
#[inline]
pub fn pin_is_set_high(port: Gpio, mask: u32) -> bool {
(port.odr().read().0) & mask != 0
}
#[inline]
pub fn pin_is_set_low(port: Gpio, mask: u32) -> bool {
(port.odr().read().0) & mask == 0
}
#[inline]
pub fn pin_set_high(port: Gpio, mask: u32) {
port.bsrr().write_value(regs::Bsrr(mask));
}
#[inline]
pub fn pin_set_low(port: Gpio, mask: u32) {
port.brr().write_value(regs::Brr(mask));
}
pub const GPIO_PIN_0 :u32 = 0x0001;
pub const GPIO_PIN_1 :u32 = 0x0002;
pub const GPIO_PIN_2 :u32 = 0x0004;
pub const GPIO_PIN_3 :u32 = 0x0008;
pub const GPIO_PIN_4 :u32 = 0x0010;
pub const GPIO_PIN_5 :u32 = 0x0020;
pub const GPIO_PIN_6 :u32 = 0x0040;
pub const GPIO_PIN_7 :u32 = 0x0080;
pub const GPIO_PIN_8 :u32 = 0x0100;
pub const GPIO_PIN_9 :u32 = 0x0200;
pub const GPIO_PIN_10 :u32 = 0x0400;
pub const GPIO_PIN_11 :u32 = 0x0800;
pub const GPIO_PIN_12 :u32 = 0x1000;
pub const GPIO_PIN_13 :u32 = 0x2000;
pub const GPIO_PIN_14 :u32 = 0x4000;
pub const GPIO_PIN_15 :u32 = 0x8000;
pub const GPIO_PIN_ALL:u32 = 0xFFFF;