hk32-partial-hal 0.1.1

HK32 partial HAL
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;