#[doc = "Register `CTRL_R` reader"]
pub type R = crate::R<CtrlRSpec>;
#[doc = "Field `RESULT` reader - Indicates the measurement result-either the target clock counter value (for Frequency Measurement mode) or pulse width measurement (for Pulse Width Measurement mode)"]
pub type ResultR = crate::FieldReader<u32>;
#[doc = "Measurement In Progress\n\nValue on reset: 0"]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum MeasureInProgress {
#[doc = "0: Complete"]
CycleDone = 0,
#[doc = "1: In progress"]
InProgress = 1,
}
impl From<MeasureInProgress> for bool {
#[inline(always)]
fn from(variant: MeasureInProgress) -> Self {
variant as u8 != 0
}
}
#[doc = "Field `MEASURE_IN_PROGRESS` reader - Measurement In Progress"]
pub type MeasureInProgressR = crate::BitReader<MeasureInProgress>;
impl MeasureInProgressR {
#[doc = "Get enumerated values variant"]
#[inline(always)]
pub const fn variant(&self) -> MeasureInProgress {
match self.bits {
false => MeasureInProgress::CycleDone,
true => MeasureInProgress::InProgress,
}
}
#[doc = "Complete"]
#[inline(always)]
pub fn is_cycle_done(&self) -> bool {
*self == MeasureInProgress::CycleDone
}
#[doc = "In progress"]
#[inline(always)]
pub fn is_in_progress(&self) -> bool {
*self == MeasureInProgress::InProgress
}
}
impl R {
#[doc = "Bits 0:30 - Indicates the measurement result-either the target clock counter value (for Frequency Measurement mode) or pulse width measurement (for Pulse Width Measurement mode)"]
#[inline(always)]
pub fn result(&self) -> ResultR {
ResultR::new(self.bits & 0x7fff_ffff)
}
#[doc = "Bit 31 - Measurement In Progress"]
#[inline(always)]
pub fn measure_in_progress(&self) -> MeasureInProgressR {
MeasureInProgressR::new(((self.bits >> 31) & 1) != 0)
}
}
#[cfg(feature = "debug")]
impl core::fmt::Debug for R {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("CTRL_R")
.field("result", &self.result())
.field("measure_in_progress", &self.measure_in_progress())
.finish()
}
}
#[doc = "Control (in Read mode)\n\nYou can [`read`](crate::Reg::read) this register and get [`ctrl_r::R`](R). See [API](https://docs.rs/svd2rust/#read--modify--write-api)."]
pub struct CtrlRSpec;
impl crate::RegisterSpec for CtrlRSpec {
type Ux = u32;
}
#[doc = "`read()` method returns [`ctrl_r::R`](R) reader structure"]
impl crate::Readable for CtrlRSpec {}
#[doc = "`reset()` method sets CTRL_R to value 0"]
impl crate::Resettable for CtrlRSpec {}