stm32f1_staging/stm32f102/flash/acr.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
///Register `ACR` reader
pub type R = crate::R<ACRrs>;
///Register `ACR` writer
pub type W = crate::W<ACRrs>;
/**Latency
Value on reset: 0*/
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[repr(u8)]
pub enum LATENCY {
///0: Zero wait state, if 0 < SYSCLK≤ 24 MHz
Ws0 = 0,
///1: One wait state, if 24 MHz < SYSCLK ≤ 48 MHz
Ws1 = 1,
///2: Two wait states, if 48 MHz < SYSCLK ≤ 72 MHz
Ws2 = 2,
}
impl From<LATENCY> for u8 {
#[inline(always)]
fn from(variant: LATENCY) -> Self {
variant as _
}
}
impl crate::FieldSpec for LATENCY {
type Ux = u8;
}
impl crate::IsEnum for LATENCY {}
///Field `LATENCY` reader - Latency
pub type LATENCY_R = crate::FieldReader<LATENCY>;
impl LATENCY_R {
///Get enumerated values variant
#[inline(always)]
pub const fn variant(&self) -> Option<LATENCY> {
match self.bits {
0 => Some(LATENCY::Ws0),
1 => Some(LATENCY::Ws1),
2 => Some(LATENCY::Ws2),
_ => None,
}
}
///Zero wait state, if 0 < SYSCLK≤ 24 MHz
#[inline(always)]
pub fn is_ws0(&self) -> bool {
*self == LATENCY::Ws0
}
///One wait state, if 24 MHz < SYSCLK ≤ 48 MHz
#[inline(always)]
pub fn is_ws1(&self) -> bool {
*self == LATENCY::Ws1
}
///Two wait states, if 48 MHz < SYSCLK ≤ 72 MHz
#[inline(always)]
pub fn is_ws2(&self) -> bool {
*self == LATENCY::Ws2
}
}
///Field `LATENCY` writer - Latency
pub type LATENCY_W<'a, REG> = crate::FieldWriter<'a, REG, 3, LATENCY>;
impl<'a, REG> LATENCY_W<'a, REG>
where
REG: crate::Writable + crate::RegisterSpec,
REG::Ux: From<u8>,
{
///Zero wait state, if 0 < SYSCLK≤ 24 MHz
#[inline(always)]
pub fn ws0(self) -> &'a mut crate::W<REG> {
self.variant(LATENCY::Ws0)
}
///One wait state, if 24 MHz < SYSCLK ≤ 48 MHz
#[inline(always)]
pub fn ws1(self) -> &'a mut crate::W<REG> {
self.variant(LATENCY::Ws1)
}
///Two wait states, if 48 MHz < SYSCLK ≤ 72 MHz
#[inline(always)]
pub fn ws2(self) -> &'a mut crate::W<REG> {
self.variant(LATENCY::Ws2)
}
}
///Field `HLFCYA` reader - Flash half cycle access enable
pub type HLFCYA_R = crate::BitReader;
///Field `HLFCYA` writer - Flash half cycle access enable
pub type HLFCYA_W<'a, REG> = crate::BitWriter<'a, REG>;
///Field `PRFTBE` reader - Prefetch buffer enable
pub type PRFTBE_R = crate::BitReader;
///Field `PRFTBE` writer - Prefetch buffer enable
pub type PRFTBE_W<'a, REG> = crate::BitWriter<'a, REG>;
///Field `PRFTBS` reader - Prefetch buffer status
pub type PRFTBS_R = crate::BitReader;
impl R {
///Bits 0:2 - Latency
#[inline(always)]
pub fn latency(&self) -> LATENCY_R {
LATENCY_R::new((self.bits & 7) as u8)
}
///Bit 3 - Flash half cycle access enable
#[inline(always)]
pub fn hlfcya(&self) -> HLFCYA_R {
HLFCYA_R::new(((self.bits >> 3) & 1) != 0)
}
///Bit 4 - Prefetch buffer enable
#[inline(always)]
pub fn prftbe(&self) -> PRFTBE_R {
PRFTBE_R::new(((self.bits >> 4) & 1) != 0)
}
///Bit 5 - Prefetch buffer status
#[inline(always)]
pub fn prftbs(&self) -> PRFTBS_R {
PRFTBS_R::new(((self.bits >> 5) & 1) != 0)
}
}
impl core::fmt::Debug for R {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("ACR")
.field("latency", &self.latency())
.field("hlfcya", &self.hlfcya())
.field("prftbe", &self.prftbe())
.field("prftbs", &self.prftbs())
.finish()
}
}
impl W {
///Bits 0:2 - Latency
#[inline(always)]
#[must_use]
pub fn latency(&mut self) -> LATENCY_W<ACRrs> {
LATENCY_W::new(self, 0)
}
///Bit 3 - Flash half cycle access enable
#[inline(always)]
#[must_use]
pub fn hlfcya(&mut self) -> HLFCYA_W<ACRrs> {
HLFCYA_W::new(self, 3)
}
///Bit 4 - Prefetch buffer enable
#[inline(always)]
#[must_use]
pub fn prftbe(&mut self) -> PRFTBE_W<ACRrs> {
PRFTBE_W::new(self, 4)
}
}
/**Flash access control register
You can [`read`](crate::Reg::read) this register and get [`acr::R`](R). You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`acr::W`](W). You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).
See register [structure](https://stm32-rs.github.io/stm32-rs/STM32F102.html#FLASH:ACR)*/
pub struct ACRrs;
impl crate::RegisterSpec for ACRrs {
type Ux = u32;
}
///`read()` method returns [`acr::R`](R) reader structure
impl crate::Readable for ACRrs {}
///`write(|w| ..)` method takes [`acr::W`](W) writer structure
impl crate::Writable for ACRrs {
type Safety = crate::Unsafe;
const ZERO_TO_MODIFY_FIELDS_BITMAP: u32 = 0;
const ONE_TO_MODIFY_FIELDS_BITMAP: u32 = 0;
}
///`reset()` method sets ACR to value 0x30
impl crate::Resettable for ACRrs {
const RESET_VALUE: u32 = 0x30;
}