hk32-partial-hal 0.3.1

HK32 partial HAL
use crate::pac::gpio::{regs, Gpio};

#[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) {
    #[cfg(not(feature = "hk32f005"))]
    port.brr().write_value(regs::Brr(mask));

    #[cfg(feature = "hk32f005")]
    port.bsrr().write_value(regs::Bsrr(mask << 16));
}

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;