py32f0/py32f030/rcc/
icscr.rspub struct R(crate::R<ICSCR_SPEC>);
impl core::ops::Deref for R {
type Target = crate::R<ICSCR_SPEC>;
#[inline(always)]
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl From<crate::R<ICSCR_SPEC>> for R {
#[inline(always)]
fn from(reader: crate::R<ICSCR_SPEC>) -> Self {
R(reader)
}
}
pub struct W(crate::W<ICSCR_SPEC>);
impl core::ops::Deref for W {
type Target = crate::W<ICSCR_SPEC>;
#[inline(always)]
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl core::ops::DerefMut for W {
#[inline(always)]
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
impl From<crate::W<ICSCR_SPEC>> for W {
#[inline(always)]
fn from(writer: crate::W<ICSCR_SPEC>) -> Self {
W(writer)
}
}
pub type HSI_TRIM_R = crate::FieldReader<u16, u16>;
pub type HSI_TRIM_W<'a, const O: u8> = crate::FieldWriter<'a, u32, ICSCR_SPEC, u16, u16, 13, O>;
pub type HSI_FS_R = crate::FieldReader<u8, HSI_FS_A>;
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[repr(u8)]
pub enum HSI_FS_A {
Freq4mhz = 0,
Freq8mhz = 1,
Freq16mhz = 2,
Freq2212mhz = 3,
Freq24mhz = 4,
}
impl From<HSI_FS_A> for u8 {
#[inline(always)]
fn from(variant: HSI_FS_A) -> Self {
variant as _
}
}
impl HSI_FS_R {
#[inline(always)]
pub fn variant(&self) -> Option<HSI_FS_A> {
match self.bits {
0 => Some(HSI_FS_A::Freq4mhz),
1 => Some(HSI_FS_A::Freq8mhz),
2 => Some(HSI_FS_A::Freq16mhz),
3 => Some(HSI_FS_A::Freq2212mhz),
4 => Some(HSI_FS_A::Freq24mhz),
_ => None,
}
}
#[inline(always)]
pub fn is_freq4mhz(&self) -> bool {
*self == HSI_FS_A::Freq4mhz
}
#[inline(always)]
pub fn is_freq8mhz(&self) -> bool {
*self == HSI_FS_A::Freq8mhz
}
#[inline(always)]
pub fn is_freq16mhz(&self) -> bool {
*self == HSI_FS_A::Freq16mhz
}
#[inline(always)]
pub fn is_freq22_12mhz(&self) -> bool {
*self == HSI_FS_A::Freq2212mhz
}
#[inline(always)]
pub fn is_freq24mhz(&self) -> bool {
*self == HSI_FS_A::Freq24mhz
}
}
pub type HSI_FS_W<'a, const O: u8> = crate::FieldWriter<'a, u32, ICSCR_SPEC, u8, HSI_FS_A, 3, O>;
impl<'a, const O: u8> HSI_FS_W<'a, O> {
#[inline(always)]
pub fn freq4mhz(self) -> &'a mut W {
self.variant(HSI_FS_A::Freq4mhz)
}
#[inline(always)]
pub fn freq8mhz(self) -> &'a mut W {
self.variant(HSI_FS_A::Freq8mhz)
}
#[inline(always)]
pub fn freq16mhz(self) -> &'a mut W {
self.variant(HSI_FS_A::Freq16mhz)
}
#[inline(always)]
pub fn freq22_12mhz(self) -> &'a mut W {
self.variant(HSI_FS_A::Freq2212mhz)
}
#[inline(always)]
pub fn freq24mhz(self) -> &'a mut W {
self.variant(HSI_FS_A::Freq24mhz)
}
}
pub type LSI_TRIM_R = crate::FieldReader<u16, u16>;
pub type LSI_TRIM_W<'a, const O: u8> = crate::FieldWriter<'a, u32, ICSCR_SPEC, u16, u16, 9, O>;
pub type LSI_STARTUP_R = crate::FieldReader<u8, LSI_STARTUP_A>;
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[repr(u8)]
pub enum LSI_STARTUP_A {
Cycles4 = 0,
Cycles16 = 1,
Cycles64 = 2,
Cycles256 = 3,
}
impl From<LSI_STARTUP_A> for u8 {
#[inline(always)]
fn from(variant: LSI_STARTUP_A) -> Self {
variant as _
}
}
impl LSI_STARTUP_R {
#[inline(always)]
pub fn variant(&self) -> LSI_STARTUP_A {
match self.bits {
0 => LSI_STARTUP_A::Cycles4,
1 => LSI_STARTUP_A::Cycles16,
2 => LSI_STARTUP_A::Cycles64,
3 => LSI_STARTUP_A::Cycles256,
_ => unreachable!(),
}
}
#[inline(always)]
pub fn is_cycles4(&self) -> bool {
*self == LSI_STARTUP_A::Cycles4
}
#[inline(always)]
pub fn is_cycles16(&self) -> bool {
*self == LSI_STARTUP_A::Cycles16
}
#[inline(always)]
pub fn is_cycles64(&self) -> bool {
*self == LSI_STARTUP_A::Cycles64
}
#[inline(always)]
pub fn is_cycles256(&self) -> bool {
*self == LSI_STARTUP_A::Cycles256
}
}
pub type LSI_STARTUP_W<'a, const O: u8> =
crate::FieldWriterSafe<'a, u32, ICSCR_SPEC, u8, LSI_STARTUP_A, 2, O>;
impl<'a, const O: u8> LSI_STARTUP_W<'a, O> {
#[inline(always)]
pub fn cycles4(self) -> &'a mut W {
self.variant(LSI_STARTUP_A::Cycles4)
}
#[inline(always)]
pub fn cycles16(self) -> &'a mut W {
self.variant(LSI_STARTUP_A::Cycles16)
}
#[inline(always)]
pub fn cycles64(self) -> &'a mut W {
self.variant(LSI_STARTUP_A::Cycles64)
}
#[inline(always)]
pub fn cycles256(self) -> &'a mut W {
self.variant(LSI_STARTUP_A::Cycles256)
}
}
impl R {
#[inline(always)]
pub fn hsi_trim(&self) -> HSI_TRIM_R {
HSI_TRIM_R::new((self.bits & 0x1fff) as u16)
}
#[inline(always)]
pub fn hsi_fs(&self) -> HSI_FS_R {
HSI_FS_R::new(((self.bits >> 13) & 7) as u8)
}
#[inline(always)]
pub fn lsi_trim(&self) -> LSI_TRIM_R {
LSI_TRIM_R::new(((self.bits >> 16) & 0x01ff) as u16)
}
#[inline(always)]
pub fn lsi_startup(&self) -> LSI_STARTUP_R {
LSI_STARTUP_R::new(((self.bits >> 26) & 3) as u8)
}
}
impl W {
#[inline(always)]
#[must_use]
pub fn hsi_trim(&mut self) -> HSI_TRIM_W<0> {
HSI_TRIM_W::new(self)
}
#[inline(always)]
#[must_use]
pub fn hsi_fs(&mut self) -> HSI_FS_W<13> {
HSI_FS_W::new(self)
}
#[inline(always)]
#[must_use]
pub fn lsi_trim(&mut self) -> LSI_TRIM_W<16> {
LSI_TRIM_W::new(self)
}
#[inline(always)]
#[must_use]
pub fn lsi_startup(&mut self) -> LSI_STARTUP_W<26> {
LSI_STARTUP_W::new(self)
}
#[inline(always)]
pub unsafe fn bits(&mut self, bits: u32) -> &mut Self {
self.0.bits(bits);
self
}
}
pub struct ICSCR_SPEC;
impl crate::RegisterSpec for ICSCR_SPEC {
type Ux = u32;
}
impl crate::Readable for ICSCR_SPEC {
type Reader = R;
}
impl crate::Writable for ICSCR_SPEC {
type Writer = W;
const ZERO_TO_MODIFY_FIELDS_BITMAP: Self::Ux = 0;
const ONE_TO_MODIFY_FIELDS_BITMAP: Self::Ux = 0;
}
impl crate::Resettable for ICSCR_SPEC {
const RESET_VALUE: Self::Ux = 0x1000_0000;
}