#[repr(C)]
#[cfg_attr(feature = "debug", derive(Debug))]
#[doc = "Register block"]
pub struct RegisterBlock {
    _reserved0: [u8; 0x10],
    cr: Cr,
    sr: Sr,
    lr: Lr,
    ier: Ier,
    tsr: Tsr,
    ter: Ter,
    _reserved6: [u8; 0x04],
    ppr: Ppr,
    _reserved7: [u8; 0x10],
    pgfr: [Pgfr; 6],
}
impl RegisterBlock {
    #[doc = "0x10 - Control"]
    #[inline(always)]
    pub const fn cr(&self) -> &Cr {
        &self.cr
    }
    #[doc = "0x14 - Status"]
    #[inline(always)]
    pub const fn sr(&self) -> &Sr {
        &self.sr
    }
    #[doc = "0x18 - Lock"]
    #[inline(always)]
    pub const fn lr(&self) -> &Lr {
        &self.lr
    }
    #[doc = "0x1c - Interrupt Enable"]
    #[inline(always)]
    pub const fn ier(&self) -> &Ier {
        &self.ier
    }
    #[doc = "0x20 - Tamper Seconds"]
    #[inline(always)]
    pub const fn tsr(&self) -> &Tsr {
        &self.tsr
    }
    #[doc = "0x24 - Tamper Enable"]
    #[inline(always)]
    pub const fn ter(&self) -> &Ter {
        &self.ter
    }
    #[doc = "0x2c - Pin Polarity"]
    #[inline(always)]
    pub const fn ppr(&self) -> &Ppr {
        &self.ppr
    }
    #[doc = "0x40..0x58 - Pin Glitch Filter"]
    #[inline(always)]
    pub const fn pgfr(&self, n: usize) -> &Pgfr {
        &self.pgfr[n]
    }
    #[doc = "Iterator for array of:"]
    #[doc = "0x40..0x58 - Pin Glitch Filter"]
    #[inline(always)]
    pub fn pgfr_iter(&self) -> impl Iterator<Item = &Pgfr> {
        self.pgfr.iter()
    }
}
#[doc = "CR (rw) register accessor: Control\n\nYou can [`read`](crate::Reg::read) this register and get [`cr::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`cr::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@cr`] module"]
#[doc(alias = "CR")]
pub type Cr = crate::Reg<cr::CrSpec>;
#[doc = "Control"]
pub mod cr;
#[doc = "SR (rw) register accessor: Status\n\nYou can [`read`](crate::Reg::read) this register and get [`sr::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`sr::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@sr`] module"]
#[doc(alias = "SR")]
pub type Sr = crate::Reg<sr::SrSpec>;
#[doc = "Status"]
pub mod sr;
#[doc = "LR (rw) register accessor: Lock\n\nYou can [`read`](crate::Reg::read) this register and get [`lr::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`lr::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@lr`] module"]
#[doc(alias = "LR")]
pub type Lr = crate::Reg<lr::LrSpec>;
#[doc = "Lock"]
pub mod lr;
#[doc = "IER (rw) register accessor: Interrupt Enable\n\nYou can [`read`](crate::Reg::read) this register and get [`ier::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`ier::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@ier`] module"]
#[doc(alias = "IER")]
pub type Ier = crate::Reg<ier::IerSpec>;
#[doc = "Interrupt Enable"]
pub mod ier;
#[doc = "TSR (rw) register accessor: Tamper Seconds\n\nYou can [`read`](crate::Reg::read) this register and get [`tsr::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`tsr::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@tsr`] module"]
#[doc(alias = "TSR")]
pub type Tsr = crate::Reg<tsr::TsrSpec>;
#[doc = "Tamper Seconds"]
pub mod tsr;
#[doc = "TER (rw) register accessor: Tamper Enable\n\nYou can [`read`](crate::Reg::read) this register and get [`ter::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`ter::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@ter`] module"]
#[doc(alias = "TER")]
pub type Ter = crate::Reg<ter::TerSpec>;
#[doc = "Tamper Enable"]
pub mod ter;
#[doc = "PPR (rw) register accessor: Pin Polarity\n\nYou can [`read`](crate::Reg::read) this register and get [`ppr::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`ppr::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@ppr`] module"]
#[doc(alias = "PPR")]
pub type Ppr = crate::Reg<ppr::PprSpec>;
#[doc = "Pin Polarity"]
pub mod ppr;
#[doc = "PGFR (rw) register accessor: Pin Glitch Filter\n\nYou can [`read`](crate::Reg::read) this register and get [`pgfr::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`pgfr::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@pgfr`] module"]
#[doc(alias = "PGFR")]
pub type Pgfr = crate::Reg<pgfr::PgfrSpec>;
#[doc = "Pin Glitch Filter"]
pub mod pgfr;
