#[doc = "Parallel Input/Output Controller A"]
#[derive(Copy, Clone, Eq, PartialEq)]
pub struct Pio {
ptr: *mut u8,
}
unsafe impl Send for Pio {}
unsafe impl Sync for Pio {}
impl Pio {
#[inline(always)]
pub const unsafe fn from_ptr(ptr: *mut ()) -> Self {
Self { ptr: ptr as _ }
}
#[inline(always)]
pub const fn as_ptr(&self) -> *mut () {
self.ptr as _
}
#[doc = "PIO Enable Register"]
#[inline(always)]
pub const fn per(self) -> crate::common::Reg<regs::Per, crate::common::W> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x0usize) as _) }
}
#[doc = "PIO Disable Register"]
#[inline(always)]
pub const fn pdr(self) -> crate::common::Reg<regs::Pdr, crate::common::W> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x04usize) as _) }
}
#[doc = "PIO Status Register"]
#[inline(always)]
pub const fn psr(self) -> crate::common::Reg<regs::Psr, crate::common::R> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x08usize) as _) }
}
#[doc = "Output Enable Register"]
#[inline(always)]
pub const fn oer(self) -> crate::common::Reg<regs::Oer, crate::common::W> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x10usize) as _) }
}
#[doc = "Output Disable Register"]
#[inline(always)]
pub const fn odr(self) -> crate::common::Reg<regs::Odr, crate::common::W> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x14usize) as _) }
}
#[doc = "Output Status Register"]
#[inline(always)]
pub const fn osr(self) -> crate::common::Reg<regs::Osr, crate::common::R> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x18usize) as _) }
}
#[doc = "Glitch Input Filter Enable Register"]
#[inline(always)]
pub const fn ifer(self) -> crate::common::Reg<regs::Ifer, crate::common::W> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x20usize) as _) }
}
#[doc = "Glitch Input Filter Disable Register"]
#[inline(always)]
pub const fn ifdr(self) -> crate::common::Reg<regs::Ifdr, crate::common::W> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x24usize) as _) }
}
#[doc = "Glitch Input Filter Status Register"]
#[inline(always)]
pub const fn ifsr(self) -> crate::common::Reg<regs::Ifsr, crate::common::R> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x28usize) as _) }
}
#[doc = "Set Output Data Register"]
#[inline(always)]
pub const fn sodr(self) -> crate::common::Reg<regs::Sodr, crate::common::W> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x30usize) as _) }
}
#[doc = "Clear Output Data Register"]
#[inline(always)]
pub const fn codr(self) -> crate::common::Reg<regs::Codr, crate::common::W> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x34usize) as _) }
}
#[doc = "Output Data Status Register"]
#[inline(always)]
pub const fn odsr(self) -> crate::common::Reg<regs::Odsr, crate::common::RW> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x38usize) as _) }
}
#[doc = "Pin Data Status Register"]
#[inline(always)]
pub const fn pdsr(self) -> crate::common::Reg<regs::Pdsr, crate::common::R> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x3cusize) as _) }
}
#[doc = "Interrupt Enable Register"]
#[inline(always)]
pub const fn ier(self) -> crate::common::Reg<regs::Ier, crate::common::W> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x40usize) as _) }
}
#[doc = "Interrupt Disable Register"]
#[inline(always)]
pub const fn idr(self) -> crate::common::Reg<regs::Idr, crate::common::W> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x44usize) as _) }
}
#[doc = "Interrupt Mask Register"]
#[inline(always)]
pub const fn imr(self) -> crate::common::Reg<regs::Imr, crate::common::R> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x48usize) as _) }
}
#[doc = "Interrupt Status Register"]
#[inline(always)]
pub const fn isr(self) -> crate::common::Reg<regs::Isr, crate::common::R> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x4cusize) as _) }
}
#[doc = "Multi-driver Enable Register"]
#[inline(always)]
pub const fn mder(self) -> crate::common::Reg<regs::Mder, crate::common::W> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x50usize) as _) }
}
#[doc = "Multi-driver Disable Register"]
#[inline(always)]
pub const fn mddr(self) -> crate::common::Reg<regs::Mddr, crate::common::W> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x54usize) as _) }
}
#[doc = "Multi-driver Status Register"]
#[inline(always)]
pub const fn mdsr(self) -> crate::common::Reg<regs::Mdsr, crate::common::R> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x58usize) as _) }
}
#[doc = "Pull-up Disable Register"]
#[inline(always)]
pub const fn pudr(self) -> crate::common::Reg<regs::Pudr, crate::common::W> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x60usize) as _) }
}
#[doc = "Pull-up Enable Register"]
#[inline(always)]
pub const fn puer(self) -> crate::common::Reg<regs::Puer, crate::common::W> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x64usize) as _) }
}
#[doc = "Pad Pull-up Status Register"]
#[inline(always)]
pub const fn pusr(self) -> crate::common::Reg<regs::Pusr, crate::common::R> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x68usize) as _) }
}
#[doc = "Peripheral AB Select Register"]
#[inline(always)]
pub const fn absr(self) -> crate::common::Reg<regs::Absr, crate::common::RW> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x70usize) as _) }
}
#[doc = "System Clock Glitch Input Filter Select Register"]
#[inline(always)]
pub const fn scifsr(self) -> crate::common::Reg<regs::Scifsr, crate::common::W> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x80usize) as _) }
}
#[doc = "Debouncing Input Filter Select Register"]
#[inline(always)]
pub const fn difsr(self) -> crate::common::Reg<regs::Difsr, crate::common::W> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x84usize) as _) }
}
#[doc = "Glitch or Debouncing Input Filter Clock Selection Status Register"]
#[inline(always)]
pub const fn ifdgsr(self) -> crate::common::Reg<regs::Ifdgsr, crate::common::R> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x88usize) as _) }
}
#[doc = "Slow Clock Divider Debouncing Register"]
#[inline(always)]
pub const fn scdr(self) -> crate::common::Reg<regs::Scdr, crate::common::RW> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0x8cusize) as _) }
}
#[doc = "Output Write Enable"]
#[inline(always)]
pub const fn ower(self) -> crate::common::Reg<regs::Ower, crate::common::W> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0xa0usize) as _) }
}
#[doc = "Output Write Disable"]
#[inline(always)]
pub const fn owdr(self) -> crate::common::Reg<regs::Owdr, crate::common::W> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0xa4usize) as _) }
}
#[doc = "Output Write Status Register"]
#[inline(always)]
pub const fn owsr(self) -> crate::common::Reg<regs::Owsr, crate::common::R> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0xa8usize) as _) }
}
#[doc = "Additional Interrupt Modes Enable Register"]
#[inline(always)]
pub const fn aimer(self) -> crate::common::Reg<regs::Aimer, crate::common::W> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0xb0usize) as _) }
}
#[doc = "Additional Interrupt Modes Disables Register"]
#[inline(always)]
pub const fn aimdr(self) -> crate::common::Reg<regs::Aimdr, crate::common::W> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0xb4usize) as _) }
}
#[doc = "Additional Interrupt Modes Mask Register"]
#[inline(always)]
pub const fn aimmr(self) -> crate::common::Reg<regs::Aimmr, crate::common::R> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0xb8usize) as _) }
}
#[doc = "Edge Select Register"]
#[inline(always)]
pub const fn esr(self) -> crate::common::Reg<regs::Esr, crate::common::W> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0xc0usize) as _) }
}
#[doc = "Level Select Register"]
#[inline(always)]
pub const fn lsr(self) -> crate::common::Reg<regs::Lsr, crate::common::W> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0xc4usize) as _) }
}
#[doc = "Edge/Level Status Register"]
#[inline(always)]
pub const fn elsr(self) -> crate::common::Reg<regs::Elsr, crate::common::R> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0xc8usize) as _) }
}
#[doc = "Falling Edge/Low Level Select Register"]
#[inline(always)]
pub const fn fellsr(self) -> crate::common::Reg<regs::Fellsr, crate::common::W> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0xd0usize) as _) }
}
#[doc = "Rising Edge/ High Level Select Register"]
#[inline(always)]
pub const fn rehlsr(self) -> crate::common::Reg<regs::Rehlsr, crate::common::W> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0xd4usize) as _) }
}
#[doc = "Fall/Rise - Low/High Status Register"]
#[inline(always)]
pub const fn frlhsr(self) -> crate::common::Reg<regs::Frlhsr, crate::common::R> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0xd8usize) as _) }
}
#[doc = "Lock Status"]
#[inline(always)]
pub const fn locksr(self) -> crate::common::Reg<regs::Locksr, crate::common::R> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0xe0usize) as _) }
}
#[doc = "Write Protect Mode Register"]
#[inline(always)]
pub const fn wpmr(self) -> crate::common::Reg<regs::Wpmr, crate::common::RW> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0xe4usize) as _) }
}
#[doc = "Write Protect Status Register"]
#[inline(always)]
pub const fn wpsr(self) -> crate::common::Reg<regs::Wpsr, crate::common::R> {
unsafe { crate::common::Reg::from_ptr(self.ptr.wrapping_add(0xe8usize) as _) }
}
}
pub mod regs;