1pub struct R(crate::R<ECSCR_SPEC>);
3impl core::ops::Deref for R {
4 type Target = crate::R<ECSCR_SPEC>;
5 #[inline(always)]
6 fn deref(&self) -> &Self::Target {
7 &self.0
8 }
9}
10impl From<crate::R<ECSCR_SPEC>> for R {
11 #[inline(always)]
12 fn from(reader: crate::R<ECSCR_SPEC>) -> Self {
13 R(reader)
14 }
15}
16pub struct W(crate::W<ECSCR_SPEC>);
18impl core::ops::Deref for W {
19 type Target = crate::W<ECSCR_SPEC>;
20 #[inline(always)]
21 fn deref(&self) -> &Self::Target {
22 &self.0
23 }
24}
25impl core::ops::DerefMut for W {
26 #[inline(always)]
27 fn deref_mut(&mut self) -> &mut Self::Target {
28 &mut self.0
29 }
30}
31impl From<crate::W<ECSCR_SPEC>> for W {
32 #[inline(always)]
33 fn from(writer: crate::W<ECSCR_SPEC>) -> Self {
34 W(writer)
35 }
36}
37pub type HSE_DRV_R = crate::FieldReader<u8, HSE_DRV_A>;
39#[derive(Clone, Copy, Debug, PartialEq, Eq)]
43#[repr(u8)]
44pub enum HSE_DRV_A {
45 Disabled = 0,
47 Low = 1,
49 Medium = 2,
51 High = 3,
53}
54impl From<HSE_DRV_A> for u8 {
55 #[inline(always)]
56 fn from(variant: HSE_DRV_A) -> Self {
57 variant as _
58 }
59}
60impl HSE_DRV_R {
61 #[inline(always)]
63 pub fn variant(&self) -> HSE_DRV_A {
64 match self.bits {
65 0 => HSE_DRV_A::Disabled,
66 1 => HSE_DRV_A::Low,
67 2 => HSE_DRV_A::Medium,
68 3 => HSE_DRV_A::High,
69 _ => unreachable!(),
70 }
71 }
72 #[inline(always)]
74 pub fn is_disabled(&self) -> bool {
75 *self == HSE_DRV_A::Disabled
76 }
77 #[inline(always)]
79 pub fn is_low(&self) -> bool {
80 *self == HSE_DRV_A::Low
81 }
82 #[inline(always)]
84 pub fn is_medium(&self) -> bool {
85 *self == HSE_DRV_A::Medium
86 }
87 #[inline(always)]
89 pub fn is_high(&self) -> bool {
90 *self == HSE_DRV_A::High
91 }
92}
93pub type HSE_DRV_W<'a, const O: u8> =
95 crate::FieldWriterSafe<'a, u32, ECSCR_SPEC, u8, HSE_DRV_A, 2, O>;
96impl<'a, const O: u8> HSE_DRV_W<'a, O> {
97 #[inline(always)]
99 pub fn disabled(self) -> &'a mut W {
100 self.variant(HSE_DRV_A::Disabled)
101 }
102 #[inline(always)]
104 pub fn low(self) -> &'a mut W {
105 self.variant(HSE_DRV_A::Low)
106 }
107 #[inline(always)]
109 pub fn medium(self) -> &'a mut W {
110 self.variant(HSE_DRV_A::Medium)
111 }
112 #[inline(always)]
114 pub fn high(self) -> &'a mut W {
115 self.variant(HSE_DRV_A::High)
116 }
117}
118pub type HSE_STARTUP_R = crate::FieldReader<u8, HSE_STARTUP_A>;
120#[derive(Clone, Copy, Debug, PartialEq, Eq)]
124#[repr(u8)]
125pub enum HSE_STARTUP_A {
126 ClockCycles1 = 0,
128 ClockCycles2 = 1,
130 ClockCycles3 = 2,
132 DirectOutput = 3,
134}
135impl From<HSE_STARTUP_A> for u8 {
136 #[inline(always)]
137 fn from(variant: HSE_STARTUP_A) -> Self {
138 variant as _
139 }
140}
141impl HSE_STARTUP_R {
142 #[inline(always)]
144 pub fn variant(&self) -> HSE_STARTUP_A {
145 match self.bits {
146 0 => HSE_STARTUP_A::ClockCycles1,
147 1 => HSE_STARTUP_A::ClockCycles2,
148 2 => HSE_STARTUP_A::ClockCycles3,
149 3 => HSE_STARTUP_A::DirectOutput,
150 _ => unreachable!(),
151 }
152 }
153 #[inline(always)]
155 pub fn is_clock_cycles1(&self) -> bool {
156 *self == HSE_STARTUP_A::ClockCycles1
157 }
158 #[inline(always)]
160 pub fn is_clock_cycles2(&self) -> bool {
161 *self == HSE_STARTUP_A::ClockCycles2
162 }
163 #[inline(always)]
165 pub fn is_clock_cycles3(&self) -> bool {
166 *self == HSE_STARTUP_A::ClockCycles3
167 }
168 #[inline(always)]
170 pub fn is_direct_output(&self) -> bool {
171 *self == HSE_STARTUP_A::DirectOutput
172 }
173}
174pub type HSE_STARTUP_W<'a, const O: u8> =
176 crate::FieldWriterSafe<'a, u32, ECSCR_SPEC, u8, HSE_STARTUP_A, 2, O>;
177impl<'a, const O: u8> HSE_STARTUP_W<'a, O> {
178 #[inline(always)]
180 pub fn clock_cycles1(self) -> &'a mut W {
181 self.variant(HSE_STARTUP_A::ClockCycles1)
182 }
183 #[inline(always)]
185 pub fn clock_cycles2(self) -> &'a mut W {
186 self.variant(HSE_STARTUP_A::ClockCycles2)
187 }
188 #[inline(always)]
190 pub fn clock_cycles3(self) -> &'a mut W {
191 self.variant(HSE_STARTUP_A::ClockCycles3)
192 }
193 #[inline(always)]
195 pub fn direct_output(self) -> &'a mut W {
196 self.variant(HSE_STARTUP_A::DirectOutput)
197 }
198}
199pub type LSE_DRIVER_R = crate::FieldReader<u8, LSE_DRIVER_A>;
201#[derive(Clone, Copy, Debug, PartialEq, Eq)]
205#[repr(u8)]
206pub enum LSE_DRIVER_A {
207 Disabled = 0,
209 Low = 1,
211 Medium = 2,
213 High = 3,
215}
216impl From<LSE_DRIVER_A> for u8 {
217 #[inline(always)]
218 fn from(variant: LSE_DRIVER_A) -> Self {
219 variant as _
220 }
221}
222impl LSE_DRIVER_R {
223 #[inline(always)]
225 pub fn variant(&self) -> LSE_DRIVER_A {
226 match self.bits {
227 0 => LSE_DRIVER_A::Disabled,
228 1 => LSE_DRIVER_A::Low,
229 2 => LSE_DRIVER_A::Medium,
230 3 => LSE_DRIVER_A::High,
231 _ => unreachable!(),
232 }
233 }
234 #[inline(always)]
236 pub fn is_disabled(&self) -> bool {
237 *self == LSE_DRIVER_A::Disabled
238 }
239 #[inline(always)]
241 pub fn is_low(&self) -> bool {
242 *self == LSE_DRIVER_A::Low
243 }
244 #[inline(always)]
246 pub fn is_medium(&self) -> bool {
247 *self == LSE_DRIVER_A::Medium
248 }
249 #[inline(always)]
251 pub fn is_high(&self) -> bool {
252 *self == LSE_DRIVER_A::High
253 }
254}
255pub type LSE_DRIVER_W<'a, const O: u8> =
257 crate::FieldWriterSafe<'a, u32, ECSCR_SPEC, u8, LSE_DRIVER_A, 2, O>;
258impl<'a, const O: u8> LSE_DRIVER_W<'a, O> {
259 #[inline(always)]
261 pub fn disabled(self) -> &'a mut W {
262 self.variant(LSE_DRIVER_A::Disabled)
263 }
264 #[inline(always)]
266 pub fn low(self) -> &'a mut W {
267 self.variant(LSE_DRIVER_A::Low)
268 }
269 #[inline(always)]
271 pub fn medium(self) -> &'a mut W {
272 self.variant(LSE_DRIVER_A::Medium)
273 }
274 #[inline(always)]
276 pub fn high(self) -> &'a mut W {
277 self.variant(LSE_DRIVER_A::High)
278 }
279}
280pub type LSE_STARTUP_R = crate::FieldReader<u8, LSE_STARTUP_A>;
282#[derive(Clone, Copy, Debug, PartialEq, Eq)]
286#[repr(u8)]
287pub enum LSE_STARTUP_A {
288 ClockCycles1 = 0,
290 ClockCycles2 = 1,
292 ClockCycles3 = 2,
294 DirectOutput = 3,
296}
297impl From<LSE_STARTUP_A> for u8 {
298 #[inline(always)]
299 fn from(variant: LSE_STARTUP_A) -> Self {
300 variant as _
301 }
302}
303impl LSE_STARTUP_R {
304 #[inline(always)]
306 pub fn variant(&self) -> LSE_STARTUP_A {
307 match self.bits {
308 0 => LSE_STARTUP_A::ClockCycles1,
309 1 => LSE_STARTUP_A::ClockCycles2,
310 2 => LSE_STARTUP_A::ClockCycles3,
311 3 => LSE_STARTUP_A::DirectOutput,
312 _ => unreachable!(),
313 }
314 }
315 #[inline(always)]
317 pub fn is_clock_cycles1(&self) -> bool {
318 *self == LSE_STARTUP_A::ClockCycles1
319 }
320 #[inline(always)]
322 pub fn is_clock_cycles2(&self) -> bool {
323 *self == LSE_STARTUP_A::ClockCycles2
324 }
325 #[inline(always)]
327 pub fn is_clock_cycles3(&self) -> bool {
328 *self == LSE_STARTUP_A::ClockCycles3
329 }
330 #[inline(always)]
332 pub fn is_direct_output(&self) -> bool {
333 *self == LSE_STARTUP_A::DirectOutput
334 }
335}
336pub type LSE_STARTUP_W<'a, const O: u8> =
338 crate::FieldWriterSafe<'a, u32, ECSCR_SPEC, u8, LSE_STARTUP_A, 2, O>;
339impl<'a, const O: u8> LSE_STARTUP_W<'a, O> {
340 #[inline(always)]
342 pub fn clock_cycles1(self) -> &'a mut W {
343 self.variant(LSE_STARTUP_A::ClockCycles1)
344 }
345 #[inline(always)]
347 pub fn clock_cycles2(self) -> &'a mut W {
348 self.variant(LSE_STARTUP_A::ClockCycles2)
349 }
350 #[inline(always)]
352 pub fn clock_cycles3(self) -> &'a mut W {
353 self.variant(LSE_STARTUP_A::ClockCycles3)
354 }
355 #[inline(always)]
357 pub fn direct_output(self) -> &'a mut W {
358 self.variant(LSE_STARTUP_A::DirectOutput)
359 }
360}
361impl R {
362 #[inline(always)]
364 pub fn hse_drv(&self) -> HSE_DRV_R {
365 HSE_DRV_R::new((self.bits & 3) as u8)
366 }
367 #[inline(always)]
369 pub fn hse_startup(&self) -> HSE_STARTUP_R {
370 HSE_STARTUP_R::new(((self.bits >> 3) & 3) as u8)
371 }
372 #[inline(always)]
374 pub fn lse_driver(&self) -> LSE_DRIVER_R {
375 LSE_DRIVER_R::new(((self.bits >> 16) & 3) as u8)
376 }
377 #[inline(always)]
379 pub fn lse_startup(&self) -> LSE_STARTUP_R {
380 LSE_STARTUP_R::new(((self.bits >> 20) & 3) as u8)
381 }
382}
383impl W {
384 #[inline(always)]
386 #[must_use]
387 pub fn hse_drv(&mut self) -> HSE_DRV_W<0> {
388 HSE_DRV_W::new(self)
389 }
390 #[inline(always)]
392 #[must_use]
393 pub fn hse_startup(&mut self) -> HSE_STARTUP_W<3> {
394 HSE_STARTUP_W::new(self)
395 }
396 #[inline(always)]
398 #[must_use]
399 pub fn lse_driver(&mut self) -> LSE_DRIVER_W<16> {
400 LSE_DRIVER_W::new(self)
401 }
402 #[inline(always)]
404 #[must_use]
405 pub fn lse_startup(&mut self) -> LSE_STARTUP_W<20> {
406 LSE_STARTUP_W::new(self)
407 }
408 #[inline(always)]
410 pub unsafe fn bits(&mut self, bits: u32) -> &mut Self {
411 self.0.bits(bits);
412 self
413 }
414}
415pub struct ECSCR_SPEC;
421impl crate::RegisterSpec for ECSCR_SPEC {
422 type Ux = u32;
423}
424impl crate::Readable for ECSCR_SPEC {
426 type Reader = R;
427}
428impl crate::Writable for ECSCR_SPEC {
430 type Writer = W;
431 const ZERO_TO_MODIFY_FIELDS_BITMAP: Self::Ux = 0;
432 const ONE_TO_MODIFY_FIELDS_BITMAP: Self::Ux = 0;
433}
434impl crate::Resettable for ECSCR_SPEC {
436 const RESET_VALUE: Self::Ux = 0;
437}