#[repr(C)]
#[derive(Debug)]
pub struct RegisterBlock {
    cr1: CR1,
    _reserved1: [u8; 0x02],
    cr2: CR2,
    _reserved2: [u8; 0x06],
    dier: DIER,
    _reserved3: [u8; 0x02],
    sr: SR,
    _reserved4: [u8; 0x02],
    egr: EGR,
    _reserved5: [u8; 0x02],
    _reserved_5_ccmr1: [u8; 0x04],
    _reserved6: [u8; 0x04],
    ccer: CCER,
    _reserved7: [u8; 0x02],
    cnt: CNT,
    psc: PSC,
    _reserved9: [u8; 0x02],
    arr: ARR,
    _reserved10: [u8; 0x02],
    rcr: RCR,
    _reserved11: [u8; 0x02],
    ccr: [CCR; 1],
    _reserved12: [u8; 0x0e],
    bdtr: BDTR,
    dcr: DCR,
    _reserved14: [u8; 0x02],
    dmar: DMAR,
    _reserved15: [u8; 0x12],
    af1: AF1,
    _reserved16: [u8; 0x04],
    tisel: TISEL,
}
impl RegisterBlock {
        #[inline(always)]
    pub const fn cr1(&self) -> &CR1 {
        &self.cr1
    }
        #[inline(always)]
    pub const fn cr2(&self) -> &CR2 {
        &self.cr2
    }
        #[inline(always)]
    pub const fn dier(&self) -> &DIER {
        &self.dier
    }
        #[inline(always)]
    pub const fn sr(&self) -> &SR {
        &self.sr
    }
        #[inline(always)]
    pub const fn egr(&self) -> &EGR {
        &self.egr
    }
        #[inline(always)]
    pub const fn ccmr1_output(&self) -> &CCMR1_OUTPUT {
        unsafe { &*core::ptr::from_ref(self).cast::<u8>().add(24).cast() }
    }
        #[inline(always)]
    pub const fn ccmr1_input(&self) -> &CCMR1_INPUT {
        unsafe { &*core::ptr::from_ref(self).cast::<u8>().add(24).cast() }
    }
        #[inline(always)]
    pub const fn ccer(&self) -> &CCER {
        &self.ccer
    }
        #[inline(always)]
    pub const fn cnt(&self) -> &CNT {
        &self.cnt
    }
        #[inline(always)]
    pub const fn psc(&self) -> &PSC {
        &self.psc
    }
        #[inline(always)]
    pub const fn arr(&self) -> &ARR {
        &self.arr
    }
        #[inline(always)]
    pub const fn rcr(&self) -> &RCR {
        &self.rcr
    }
                #[inline(always)]
    pub const fn ccr(&self, n: usize) -> &CCR {
        &self.ccr[n]
    }
            #[inline(always)]
    pub fn ccr_iter(&self) -> impl Iterator<Item = &CCR> {
        self.ccr.iter()
    }
        #[inline(always)]
    pub const fn ccr1(&self) -> &CCR {
        self.ccr(0)
    }
        #[inline(always)]
    pub const fn bdtr(&self) -> &BDTR {
        &self.bdtr
    }
        #[inline(always)]
    pub const fn dcr(&self) -> &DCR {
        &self.dcr
    }
        #[inline(always)]
    pub const fn dmar(&self) -> &DMAR {
        &self.dmar
    }
        #[inline(always)]
    pub const fn af1(&self) -> &AF1 {
        &self.af1
    }
        #[inline(always)]
    pub const fn tisel(&self) -> &TISEL {
        &self.tisel
    }
}
pub use crate::stm32l4r5::tim16::arr;
pub use crate::stm32l4r5::tim16::bdtr;
pub use crate::stm32l4r5::tim16::ccer;
pub use crate::stm32l4r5::tim16::ccmr1_input;
pub use crate::stm32l4r5::tim16::ccmr1_output;
pub use crate::stm32l4r5::tim16::ccr;
pub use crate::stm32l4r5::tim16::cnt;
pub use crate::stm32l4r5::tim16::cr1;
pub use crate::stm32l4r5::tim16::cr2;
pub use crate::stm32l4r5::tim16::dcr;
pub use crate::stm32l4r5::tim16::dier;
pub use crate::stm32l4r5::tim16::dmar;
pub use crate::stm32l4r5::tim16::egr;
pub use crate::stm32l4r5::tim16::psc;
pub use crate::stm32l4r5::tim16::rcr;
pub use crate::stm32l4r5::tim16::sr;
pub use crate::stm32l4r5::tim16::ARR;
pub use crate::stm32l4r5::tim16::BDTR;
pub use crate::stm32l4r5::tim16::CCER;
pub use crate::stm32l4r5::tim16::CCMR1_INPUT;
pub use crate::stm32l4r5::tim16::CCMR1_OUTPUT;
pub use crate::stm32l4r5::tim16::CCR;
pub use crate::stm32l4r5::tim16::CNT;
pub use crate::stm32l4r5::tim16::CR1;
pub use crate::stm32l4r5::tim16::CR2;
pub use crate::stm32l4r5::tim16::DCR;
pub use crate::stm32l4r5::tim16::DIER;
pub use crate::stm32l4r5::tim16::DMAR;
pub use crate::stm32l4r5::tim16::EGR;
pub use crate::stm32l4r5::tim16::PSC;
pub use crate::stm32l4r5::tim16::RCR;
pub use crate::stm32l4r5::tim16::SR;
pub type AF1 = crate::Reg<af1::AF1rs>;
pub mod af1;
pub type TISEL = crate::Reg<tisel::TISELrs>;
pub mod tisel;