1pub struct R(crate::R<CR3_SPEC>);
3impl core::ops::Deref for R {
4 type Target = crate::R<CR3_SPEC>;
5 #[inline(always)]
6 fn deref(&self) -> &Self::Target {
7 &self.0
8 }
9}
10impl From<crate::R<CR3_SPEC>> for R {
11 #[inline(always)]
12 fn from(reader: crate::R<CR3_SPEC>) -> Self {
13 R(reader)
14 }
15}
16pub struct W(crate::W<CR3_SPEC>);
18impl core::ops::Deref for W {
19 type Target = crate::W<CR3_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<CR3_SPEC>> for W {
32 #[inline(always)]
33 fn from(writer: crate::W<CR3_SPEC>) -> Self {
34 W(writer)
35 }
36}
37pub type EIE_R = crate::BitReader<EIE_A>;
39#[derive(Clone, Copy, Debug, PartialEq, Eq)]
43pub enum EIE_A {
44 Disabled = 0,
46 Enabled = 1,
48}
49impl From<EIE_A> for bool {
50 #[inline(always)]
51 fn from(variant: EIE_A) -> Self {
52 variant as u8 != 0
53 }
54}
55impl EIE_R {
56 #[inline(always)]
58 pub fn variant(&self) -> EIE_A {
59 match self.bits {
60 false => EIE_A::Disabled,
61 true => EIE_A::Enabled,
62 }
63 }
64 #[inline(always)]
66 pub fn is_disabled(&self) -> bool {
67 *self == EIE_A::Disabled
68 }
69 #[inline(always)]
71 pub fn is_enabled(&self) -> bool {
72 *self == EIE_A::Enabled
73 }
74}
75pub type EIE_W<'a, const O: u8> = crate::BitWriter<'a, u32, CR3_SPEC, EIE_A, O>;
77impl<'a, const O: u8> EIE_W<'a, O> {
78 #[inline(always)]
80 pub fn disabled(self) -> &'a mut W {
81 self.variant(EIE_A::Disabled)
82 }
83 #[inline(always)]
85 pub fn enabled(self) -> &'a mut W {
86 self.variant(EIE_A::Enabled)
87 }
88}
89pub type IREN_R = crate::BitReader<IREN_A>;
91#[derive(Clone, Copy, Debug, PartialEq, Eq)]
95pub enum IREN_A {
96 Disabled = 0,
98 Enabled = 1,
100}
101impl From<IREN_A> for bool {
102 #[inline(always)]
103 fn from(variant: IREN_A) -> Self {
104 variant as u8 != 0
105 }
106}
107impl IREN_R {
108 #[inline(always)]
110 pub fn variant(&self) -> IREN_A {
111 match self.bits {
112 false => IREN_A::Disabled,
113 true => IREN_A::Enabled,
114 }
115 }
116 #[inline(always)]
118 pub fn is_disabled(&self) -> bool {
119 *self == IREN_A::Disabled
120 }
121 #[inline(always)]
123 pub fn is_enabled(&self) -> bool {
124 *self == IREN_A::Enabled
125 }
126}
127pub type IREN_W<'a, const O: u8> = crate::BitWriter<'a, u32, CR3_SPEC, IREN_A, O>;
129impl<'a, const O: u8> IREN_W<'a, O> {
130 #[inline(always)]
132 pub fn disabled(self) -> &'a mut W {
133 self.variant(IREN_A::Disabled)
134 }
135 #[inline(always)]
137 pub fn enabled(self) -> &'a mut W {
138 self.variant(IREN_A::Enabled)
139 }
140}
141pub type IRLP_R = crate::BitReader<IRLP_A>;
143#[derive(Clone, Copy, Debug, PartialEq, Eq)]
147pub enum IRLP_A {
148 Normal = 0,
150 LowPower = 1,
152}
153impl From<IRLP_A> for bool {
154 #[inline(always)]
155 fn from(variant: IRLP_A) -> Self {
156 variant as u8 != 0
157 }
158}
159impl IRLP_R {
160 #[inline(always)]
162 pub fn variant(&self) -> IRLP_A {
163 match self.bits {
164 false => IRLP_A::Normal,
165 true => IRLP_A::LowPower,
166 }
167 }
168 #[inline(always)]
170 pub fn is_normal(&self) -> bool {
171 *self == IRLP_A::Normal
172 }
173 #[inline(always)]
175 pub fn is_low_power(&self) -> bool {
176 *self == IRLP_A::LowPower
177 }
178}
179pub type IRLP_W<'a, const O: u8> = crate::BitWriter<'a, u32, CR3_SPEC, IRLP_A, O>;
181impl<'a, const O: u8> IRLP_W<'a, O> {
182 #[inline(always)]
184 pub fn normal(self) -> &'a mut W {
185 self.variant(IRLP_A::Normal)
186 }
187 #[inline(always)]
189 pub fn low_power(self) -> &'a mut W {
190 self.variant(IRLP_A::LowPower)
191 }
192}
193pub type HDSEL_R = crate::BitReader<HDSEL_A>;
195#[derive(Clone, Copy, Debug, PartialEq, Eq)]
199pub enum HDSEL_A {
200 FullDuplex = 0,
202 HalfDuplex = 1,
204}
205impl From<HDSEL_A> for bool {
206 #[inline(always)]
207 fn from(variant: HDSEL_A) -> Self {
208 variant as u8 != 0
209 }
210}
211impl HDSEL_R {
212 #[inline(always)]
214 pub fn variant(&self) -> HDSEL_A {
215 match self.bits {
216 false => HDSEL_A::FullDuplex,
217 true => HDSEL_A::HalfDuplex,
218 }
219 }
220 #[inline(always)]
222 pub fn is_full_duplex(&self) -> bool {
223 *self == HDSEL_A::FullDuplex
224 }
225 #[inline(always)]
227 pub fn is_half_duplex(&self) -> bool {
228 *self == HDSEL_A::HalfDuplex
229 }
230}
231pub type HDSEL_W<'a, const O: u8> = crate::BitWriter<'a, u32, CR3_SPEC, HDSEL_A, O>;
233impl<'a, const O: u8> HDSEL_W<'a, O> {
234 #[inline(always)]
236 pub fn full_duplex(self) -> &'a mut W {
237 self.variant(HDSEL_A::FullDuplex)
238 }
239 #[inline(always)]
241 pub fn half_duplex(self) -> &'a mut W {
242 self.variant(HDSEL_A::HalfDuplex)
243 }
244}
245pub type DMAR_R = crate::BitReader<DMAR_A>;
247#[derive(Clone, Copy, Debug, PartialEq, Eq)]
251pub enum DMAR_A {
252 Disabled = 0,
254 Enabled = 1,
256}
257impl From<DMAR_A> for bool {
258 #[inline(always)]
259 fn from(variant: DMAR_A) -> Self {
260 variant as u8 != 0
261 }
262}
263impl DMAR_R {
264 #[inline(always)]
266 pub fn variant(&self) -> DMAR_A {
267 match self.bits {
268 false => DMAR_A::Disabled,
269 true => DMAR_A::Enabled,
270 }
271 }
272 #[inline(always)]
274 pub fn is_disabled(&self) -> bool {
275 *self == DMAR_A::Disabled
276 }
277 #[inline(always)]
279 pub fn is_enabled(&self) -> bool {
280 *self == DMAR_A::Enabled
281 }
282}
283pub type DMAR_W<'a, const O: u8> = crate::BitWriter<'a, u32, CR3_SPEC, DMAR_A, O>;
285impl<'a, const O: u8> DMAR_W<'a, O> {
286 #[inline(always)]
288 pub fn disabled(self) -> &'a mut W {
289 self.variant(DMAR_A::Disabled)
290 }
291 #[inline(always)]
293 pub fn enabled(self) -> &'a mut W {
294 self.variant(DMAR_A::Enabled)
295 }
296}
297pub type DMAT_R = crate::BitReader<DMAT_A>;
299#[derive(Clone, Copy, Debug, PartialEq, Eq)]
303pub enum DMAT_A {
304 Disabled = 0,
306 Enabled = 1,
308}
309impl From<DMAT_A> for bool {
310 #[inline(always)]
311 fn from(variant: DMAT_A) -> Self {
312 variant as u8 != 0
313 }
314}
315impl DMAT_R {
316 #[inline(always)]
318 pub fn variant(&self) -> DMAT_A {
319 match self.bits {
320 false => DMAT_A::Disabled,
321 true => DMAT_A::Enabled,
322 }
323 }
324 #[inline(always)]
326 pub fn is_disabled(&self) -> bool {
327 *self == DMAT_A::Disabled
328 }
329 #[inline(always)]
331 pub fn is_enabled(&self) -> bool {
332 *self == DMAT_A::Enabled
333 }
334}
335pub type DMAT_W<'a, const O: u8> = crate::BitWriter<'a, u32, CR3_SPEC, DMAT_A, O>;
337impl<'a, const O: u8> DMAT_W<'a, O> {
338 #[inline(always)]
340 pub fn disabled(self) -> &'a mut W {
341 self.variant(DMAT_A::Disabled)
342 }
343 #[inline(always)]
345 pub fn enabled(self) -> &'a mut W {
346 self.variant(DMAT_A::Enabled)
347 }
348}
349pub type RTSE_R = crate::BitReader<RTSE_A>;
351#[derive(Clone, Copy, Debug, PartialEq, Eq)]
355pub enum RTSE_A {
356 Disabled = 0,
358 Enabled = 1,
360}
361impl From<RTSE_A> for bool {
362 #[inline(always)]
363 fn from(variant: RTSE_A) -> Self {
364 variant as u8 != 0
365 }
366}
367impl RTSE_R {
368 #[inline(always)]
370 pub fn variant(&self) -> RTSE_A {
371 match self.bits {
372 false => RTSE_A::Disabled,
373 true => RTSE_A::Enabled,
374 }
375 }
376 #[inline(always)]
378 pub fn is_disabled(&self) -> bool {
379 *self == RTSE_A::Disabled
380 }
381 #[inline(always)]
383 pub fn is_enabled(&self) -> bool {
384 *self == RTSE_A::Enabled
385 }
386}
387pub type RTSE_W<'a, const O: u8> = crate::BitWriter<'a, u32, CR3_SPEC, RTSE_A, O>;
389impl<'a, const O: u8> RTSE_W<'a, O> {
390 #[inline(always)]
392 pub fn disabled(self) -> &'a mut W {
393 self.variant(RTSE_A::Disabled)
394 }
395 #[inline(always)]
397 pub fn enabled(self) -> &'a mut W {
398 self.variant(RTSE_A::Enabled)
399 }
400}
401pub type CTSE_R = crate::BitReader<CTSE_A>;
403#[derive(Clone, Copy, Debug, PartialEq, Eq)]
407pub enum CTSE_A {
408 Disabled = 0,
410 Enabled = 1,
412}
413impl From<CTSE_A> for bool {
414 #[inline(always)]
415 fn from(variant: CTSE_A) -> Self {
416 variant as u8 != 0
417 }
418}
419impl CTSE_R {
420 #[inline(always)]
422 pub fn variant(&self) -> CTSE_A {
423 match self.bits {
424 false => CTSE_A::Disabled,
425 true => CTSE_A::Enabled,
426 }
427 }
428 #[inline(always)]
430 pub fn is_disabled(&self) -> bool {
431 *self == CTSE_A::Disabled
432 }
433 #[inline(always)]
435 pub fn is_enabled(&self) -> bool {
436 *self == CTSE_A::Enabled
437 }
438}
439pub type CTSE_W<'a, const O: u8> = crate::BitWriter<'a, u32, CR3_SPEC, CTSE_A, O>;
441impl<'a, const O: u8> CTSE_W<'a, O> {
442 #[inline(always)]
444 pub fn disabled(self) -> &'a mut W {
445 self.variant(CTSE_A::Disabled)
446 }
447 #[inline(always)]
449 pub fn enabled(self) -> &'a mut W {
450 self.variant(CTSE_A::Enabled)
451 }
452}
453pub type CTSIE_R = crate::BitReader<CTSIE_A>;
455#[derive(Clone, Copy, Debug, PartialEq, Eq)]
459pub enum CTSIE_A {
460 Disabled = 0,
462 Enabled = 1,
464}
465impl From<CTSIE_A> for bool {
466 #[inline(always)]
467 fn from(variant: CTSIE_A) -> Self {
468 variant as u8 != 0
469 }
470}
471impl CTSIE_R {
472 #[inline(always)]
474 pub fn variant(&self) -> CTSIE_A {
475 match self.bits {
476 false => CTSIE_A::Disabled,
477 true => CTSIE_A::Enabled,
478 }
479 }
480 #[inline(always)]
482 pub fn is_disabled(&self) -> bool {
483 *self == CTSIE_A::Disabled
484 }
485 #[inline(always)]
487 pub fn is_enabled(&self) -> bool {
488 *self == CTSIE_A::Enabled
489 }
490}
491pub type CTSIE_W<'a, const O: u8> = crate::BitWriter<'a, u32, CR3_SPEC, CTSIE_A, O>;
493impl<'a, const O: u8> CTSIE_W<'a, O> {
494 #[inline(always)]
496 pub fn disabled(self) -> &'a mut W {
497 self.variant(CTSIE_A::Disabled)
498 }
499 #[inline(always)]
501 pub fn enabled(self) -> &'a mut W {
502 self.variant(CTSIE_A::Enabled)
503 }
504}
505pub type OVER8_R = crate::BitReader<OVER8_A>;
507#[derive(Clone, Copy, Debug, PartialEq, Eq)]
511pub enum OVER8_A {
512 Oversampling16 = 0,
514 Oversampling8 = 1,
516}
517impl From<OVER8_A> for bool {
518 #[inline(always)]
519 fn from(variant: OVER8_A) -> Self {
520 variant as u8 != 0
521 }
522}
523impl OVER8_R {
524 #[inline(always)]
526 pub fn variant(&self) -> OVER8_A {
527 match self.bits {
528 false => OVER8_A::Oversampling16,
529 true => OVER8_A::Oversampling8,
530 }
531 }
532 #[inline(always)]
534 pub fn is_oversampling16(&self) -> bool {
535 *self == OVER8_A::Oversampling16
536 }
537 #[inline(always)]
539 pub fn is_oversampling8(&self) -> bool {
540 *self == OVER8_A::Oversampling8
541 }
542}
543pub type OVER8_W<'a, const O: u8> = crate::BitWriter<'a, u32, CR3_SPEC, OVER8_A, O>;
545impl<'a, const O: u8> OVER8_W<'a, O> {
546 #[inline(always)]
548 pub fn oversampling16(self) -> &'a mut W {
549 self.variant(OVER8_A::Oversampling16)
550 }
551 #[inline(always)]
553 pub fn oversampling8(self) -> &'a mut W {
554 self.variant(OVER8_A::Oversampling8)
555 }
556}
557pub type ABREN_R = crate::BitReader<ABREN_A>;
559#[derive(Clone, Copy, Debug, PartialEq, Eq)]
563pub enum ABREN_A {
564 Disabled = 0,
566 Enabled = 1,
568}
569impl From<ABREN_A> for bool {
570 #[inline(always)]
571 fn from(variant: ABREN_A) -> Self {
572 variant as u8 != 0
573 }
574}
575impl ABREN_R {
576 #[inline(always)]
578 pub fn variant(&self) -> ABREN_A {
579 match self.bits {
580 false => ABREN_A::Disabled,
581 true => ABREN_A::Enabled,
582 }
583 }
584 #[inline(always)]
586 pub fn is_disabled(&self) -> bool {
587 *self == ABREN_A::Disabled
588 }
589 #[inline(always)]
591 pub fn is_enabled(&self) -> bool {
592 *self == ABREN_A::Enabled
593 }
594}
595pub type ABREN_W<'a, const O: u8> = crate::BitWriter<'a, u32, CR3_SPEC, ABREN_A, O>;
597impl<'a, const O: u8> ABREN_W<'a, O> {
598 #[inline(always)]
600 pub fn disabled(self) -> &'a mut W {
601 self.variant(ABREN_A::Disabled)
602 }
603 #[inline(always)]
605 pub fn enabled(self) -> &'a mut W {
606 self.variant(ABREN_A::Enabled)
607 }
608}
609pub type ABRMOD_R = crate::FieldReader<u8, ABRMOD_A>;
611#[derive(Clone, Copy, Debug, PartialEq, Eq)]
615#[repr(u8)]
616pub enum ABRMOD_A {
617 Start = 0,
619 Edge = 1,
621 Reserved1 = 2,
623 Reserved2 = 3,
625}
626impl From<ABRMOD_A> for u8 {
627 #[inline(always)]
628 fn from(variant: ABRMOD_A) -> Self {
629 variant as _
630 }
631}
632impl ABRMOD_R {
633 #[inline(always)]
635 pub fn variant(&self) -> ABRMOD_A {
636 match self.bits {
637 0 => ABRMOD_A::Start,
638 1 => ABRMOD_A::Edge,
639 2 => ABRMOD_A::Reserved1,
640 3 => ABRMOD_A::Reserved2,
641 _ => unreachable!(),
642 }
643 }
644 #[inline(always)]
646 pub fn is_start(&self) -> bool {
647 *self == ABRMOD_A::Start
648 }
649 #[inline(always)]
651 pub fn is_edge(&self) -> bool {
652 *self == ABRMOD_A::Edge
653 }
654 #[inline(always)]
656 pub fn is_reserved1(&self) -> bool {
657 *self == ABRMOD_A::Reserved1
658 }
659 #[inline(always)]
661 pub fn is_reserved2(&self) -> bool {
662 *self == ABRMOD_A::Reserved2
663 }
664}
665pub type ABRMOD_W<'a, const O: u8> = crate::FieldWriterSafe<'a, u32, CR3_SPEC, u8, ABRMOD_A, 2, O>;
667impl<'a, const O: u8> ABRMOD_W<'a, O> {
668 #[inline(always)]
670 pub fn start(self) -> &'a mut W {
671 self.variant(ABRMOD_A::Start)
672 }
673 #[inline(always)]
675 pub fn edge(self) -> &'a mut W {
676 self.variant(ABRMOD_A::Edge)
677 }
678 #[inline(always)]
680 pub fn reserved1(self) -> &'a mut W {
681 self.variant(ABRMOD_A::Reserved1)
682 }
683 #[inline(always)]
685 pub fn reserved2(self) -> &'a mut W {
686 self.variant(ABRMOD_A::Reserved2)
687 }
688}
689impl R {
690 #[inline(always)]
692 pub fn eie(&self) -> EIE_R {
693 EIE_R::new((self.bits & 1) != 0)
694 }
695 #[inline(always)]
697 pub fn iren(&self) -> IREN_R {
698 IREN_R::new(((self.bits >> 1) & 1) != 0)
699 }
700 #[inline(always)]
702 pub fn irlp(&self) -> IRLP_R {
703 IRLP_R::new(((self.bits >> 2) & 1) != 0)
704 }
705 #[inline(always)]
707 pub fn hdsel(&self) -> HDSEL_R {
708 HDSEL_R::new(((self.bits >> 3) & 1) != 0)
709 }
710 #[inline(always)]
712 pub fn dmar(&self) -> DMAR_R {
713 DMAR_R::new(((self.bits >> 6) & 1) != 0)
714 }
715 #[inline(always)]
717 pub fn dmat(&self) -> DMAT_R {
718 DMAT_R::new(((self.bits >> 7) & 1) != 0)
719 }
720 #[inline(always)]
722 pub fn rtse(&self) -> RTSE_R {
723 RTSE_R::new(((self.bits >> 8) & 1) != 0)
724 }
725 #[inline(always)]
727 pub fn ctse(&self) -> CTSE_R {
728 CTSE_R::new(((self.bits >> 9) & 1) != 0)
729 }
730 #[inline(always)]
732 pub fn ctsie(&self) -> CTSIE_R {
733 CTSIE_R::new(((self.bits >> 10) & 1) != 0)
734 }
735 #[inline(always)]
737 pub fn over8(&self) -> OVER8_R {
738 OVER8_R::new(((self.bits >> 11) & 1) != 0)
739 }
740 #[inline(always)]
742 pub fn abren(&self) -> ABREN_R {
743 ABREN_R::new(((self.bits >> 12) & 1) != 0)
744 }
745 #[inline(always)]
747 pub fn abrmod(&self) -> ABRMOD_R {
748 ABRMOD_R::new(((self.bits >> 13) & 3) as u8)
749 }
750}
751impl W {
752 #[inline(always)]
754 #[must_use]
755 pub fn eie(&mut self) -> EIE_W<0> {
756 EIE_W::new(self)
757 }
758 #[inline(always)]
760 #[must_use]
761 pub fn iren(&mut self) -> IREN_W<1> {
762 IREN_W::new(self)
763 }
764 #[inline(always)]
766 #[must_use]
767 pub fn irlp(&mut self) -> IRLP_W<2> {
768 IRLP_W::new(self)
769 }
770 #[inline(always)]
772 #[must_use]
773 pub fn hdsel(&mut self) -> HDSEL_W<3> {
774 HDSEL_W::new(self)
775 }
776 #[inline(always)]
778 #[must_use]
779 pub fn dmar(&mut self) -> DMAR_W<6> {
780 DMAR_W::new(self)
781 }
782 #[inline(always)]
784 #[must_use]
785 pub fn dmat(&mut self) -> DMAT_W<7> {
786 DMAT_W::new(self)
787 }
788 #[inline(always)]
790 #[must_use]
791 pub fn rtse(&mut self) -> RTSE_W<8> {
792 RTSE_W::new(self)
793 }
794 #[inline(always)]
796 #[must_use]
797 pub fn ctse(&mut self) -> CTSE_W<9> {
798 CTSE_W::new(self)
799 }
800 #[inline(always)]
802 #[must_use]
803 pub fn ctsie(&mut self) -> CTSIE_W<10> {
804 CTSIE_W::new(self)
805 }
806 #[inline(always)]
808 #[must_use]
809 pub fn over8(&mut self) -> OVER8_W<11> {
810 OVER8_W::new(self)
811 }
812 #[inline(always)]
814 #[must_use]
815 pub fn abren(&mut self) -> ABREN_W<12> {
816 ABREN_W::new(self)
817 }
818 #[inline(always)]
820 #[must_use]
821 pub fn abrmod(&mut self) -> ABRMOD_W<13> {
822 ABRMOD_W::new(self)
823 }
824 #[inline(always)]
826 pub unsafe fn bits(&mut self, bits: u32) -> &mut Self {
827 self.0.bits(bits);
828 self
829 }
830}
831pub struct CR3_SPEC;
837impl crate::RegisterSpec for CR3_SPEC {
838 type Ux = u32;
839}
840impl crate::Readable for CR3_SPEC {
842 type Reader = R;
843}
844impl crate::Writable for CR3_SPEC {
846 type Writer = W;
847 const ZERO_TO_MODIFY_FIELDS_BITMAP: Self::Ux = 0;
848 const ONE_TO_MODIFY_FIELDS_BITMAP: Self::Ux = 0;
849}
850impl crate::Resettable for CR3_SPEC {
852 const RESET_VALUE: Self::Ux = 0;
853}