stm32ral/stm32f3/peripherals/scb.rs
1#![allow(non_snake_case, non_upper_case_globals)]
2#![allow(non_camel_case_types)]
3//! System control block
4//!
5//! Used by: stm32f301, stm32f302, stm32f303, stm32f373, stm32f3x4, stm32f3x8
6
7use crate::{RORegister, RWRegister};
8#[cfg(not(feature = "nosync"))]
9use core::marker::PhantomData;
10
11/// CPUID base register
12pub mod CPUID {
13
14 /// Revision number
15 pub mod Revision {
16 /// Offset (0 bits)
17 pub const offset: u32 = 0;
18 /// Mask (4 bits: 0b1111 << 0)
19 pub const mask: u32 = 0b1111 << offset;
20 /// Read-only values (empty)
21 pub mod R {}
22 /// Write-only values (empty)
23 pub mod W {}
24 /// Read-write values (empty)
25 pub mod RW {}
26 }
27
28 /// Part number of the processor
29 pub mod PartNo {
30 /// Offset (4 bits)
31 pub const offset: u32 = 4;
32 /// Mask (12 bits: 0xfff << 4)
33 pub const mask: u32 = 0xfff << offset;
34 /// Read-only values (empty)
35 pub mod R {}
36 /// Write-only values (empty)
37 pub mod W {}
38 /// Read-write values (empty)
39 pub mod RW {}
40 }
41
42 /// Reads as 0xF
43 pub mod Constant {
44 /// Offset (16 bits)
45 pub const offset: u32 = 16;
46 /// Mask (4 bits: 0b1111 << 16)
47 pub const mask: u32 = 0b1111 << offset;
48 /// Read-only values (empty)
49 pub mod R {}
50 /// Write-only values (empty)
51 pub mod W {}
52 /// Read-write values (empty)
53 pub mod RW {}
54 }
55
56 /// Variant number
57 pub mod Variant {
58 /// Offset (20 bits)
59 pub const offset: u32 = 20;
60 /// Mask (4 bits: 0b1111 << 20)
61 pub const mask: u32 = 0b1111 << offset;
62 /// Read-only values (empty)
63 pub mod R {}
64 /// Write-only values (empty)
65 pub mod W {}
66 /// Read-write values (empty)
67 pub mod RW {}
68 }
69
70 /// Implementer code
71 pub mod Implementer {
72 /// Offset (24 bits)
73 pub const offset: u32 = 24;
74 /// Mask (8 bits: 0xff << 24)
75 pub const mask: u32 = 0xff << offset;
76 /// Read-only values (empty)
77 pub mod R {}
78 /// Write-only values (empty)
79 pub mod W {}
80 /// Read-write values (empty)
81 pub mod RW {}
82 }
83}
84
85/// Interrupt control and state register
86pub mod ICSR {
87
88 /// Active vector
89 pub mod VECTACTIVE {
90 /// Offset (0 bits)
91 pub const offset: u32 = 0;
92 /// Mask (9 bits: 0x1ff << 0)
93 pub const mask: u32 = 0x1ff << offset;
94 /// Read-only values (empty)
95 pub mod R {}
96 /// Write-only values (empty)
97 pub mod W {}
98 /// Read-write values (empty)
99 pub mod RW {}
100 }
101
102 /// Return to base level
103 pub mod RETTOBASE {
104 /// Offset (11 bits)
105 pub const offset: u32 = 11;
106 /// Mask (1 bit: 1 << 11)
107 pub const mask: u32 = 1 << offset;
108 /// Read-only values (empty)
109 pub mod R {}
110 /// Write-only values (empty)
111 pub mod W {}
112 /// Read-write values (empty)
113 pub mod RW {}
114 }
115
116 /// Pending vector
117 pub mod VECTPENDING {
118 /// Offset (12 bits)
119 pub const offset: u32 = 12;
120 /// Mask (7 bits: 0x7f << 12)
121 pub const mask: u32 = 0x7f << offset;
122 /// Read-only values (empty)
123 pub mod R {}
124 /// Write-only values (empty)
125 pub mod W {}
126 /// Read-write values (empty)
127 pub mod RW {}
128 }
129
130 /// Interrupt pending flag
131 pub mod ISRPENDING {
132 /// Offset (22 bits)
133 pub const offset: u32 = 22;
134 /// Mask (1 bit: 1 << 22)
135 pub const mask: u32 = 1 << offset;
136 /// Read-only values (empty)
137 pub mod R {}
138 /// Write-only values (empty)
139 pub mod W {}
140 /// Read-write values (empty)
141 pub mod RW {}
142 }
143
144 /// SysTick exception clear-pending bit
145 pub mod PENDSTCLR {
146 /// Offset (25 bits)
147 pub const offset: u32 = 25;
148 /// Mask (1 bit: 1 << 25)
149 pub const mask: u32 = 1 << offset;
150 /// Read-only values (empty)
151 pub mod R {}
152 /// Write-only values (empty)
153 pub mod W {}
154 /// Read-write values (empty)
155 pub mod RW {}
156 }
157
158 /// SysTick exception set-pending bit
159 pub mod PENDSTSET {
160 /// Offset (26 bits)
161 pub const offset: u32 = 26;
162 /// Mask (1 bit: 1 << 26)
163 pub const mask: u32 = 1 << offset;
164 /// Read-only values (empty)
165 pub mod R {}
166 /// Write-only values (empty)
167 pub mod W {}
168 /// Read-write values (empty)
169 pub mod RW {}
170 }
171
172 /// PendSV clear-pending bit
173 pub mod PENDSVCLR {
174 /// Offset (27 bits)
175 pub const offset: u32 = 27;
176 /// Mask (1 bit: 1 << 27)
177 pub const mask: u32 = 1 << offset;
178 /// Read-only values (empty)
179 pub mod R {}
180 /// Write-only values (empty)
181 pub mod W {}
182 /// Read-write values (empty)
183 pub mod RW {}
184 }
185
186 /// PendSV set-pending bit
187 pub mod PENDSVSET {
188 /// Offset (28 bits)
189 pub const offset: u32 = 28;
190 /// Mask (1 bit: 1 << 28)
191 pub const mask: u32 = 1 << offset;
192 /// Read-only values (empty)
193 pub mod R {}
194 /// Write-only values (empty)
195 pub mod W {}
196 /// Read-write values (empty)
197 pub mod RW {}
198 }
199
200 /// NMI set-pending bit.
201 pub mod NMIPENDSET {
202 /// Offset (31 bits)
203 pub const offset: u32 = 31;
204 /// Mask (1 bit: 1 << 31)
205 pub const mask: u32 = 1 << offset;
206 /// Read-only values (empty)
207 pub mod R {}
208 /// Write-only values (empty)
209 pub mod W {}
210 /// Read-write values (empty)
211 pub mod RW {}
212 }
213}
214
215/// Vector table offset register
216pub mod VTOR {
217
218 /// Vector table base offset field
219 pub mod TBLOFF {
220 /// Offset (9 bits)
221 pub const offset: u32 = 9;
222 /// Mask (21 bits: 0x1fffff << 9)
223 pub const mask: u32 = 0x1fffff << offset;
224 /// Read-only values (empty)
225 pub mod R {}
226 /// Write-only values (empty)
227 pub mod W {}
228 /// Read-write values (empty)
229 pub mod RW {}
230 }
231}
232
233/// Application interrupt and reset control register
234pub mod AIRCR {
235
236 /// VECTRESET
237 pub mod VECTRESET {
238 /// Offset (0 bits)
239 pub const offset: u32 = 0;
240 /// Mask (1 bit: 1 << 0)
241 pub const mask: u32 = 1 << offset;
242 /// Read-only values (empty)
243 pub mod R {}
244 /// Write-only values (empty)
245 pub mod W {}
246 /// Read-write values (empty)
247 pub mod RW {}
248 }
249
250 /// VECTCLRACTIVE
251 pub mod VECTCLRACTIVE {
252 /// Offset (1 bits)
253 pub const offset: u32 = 1;
254 /// Mask (1 bit: 1 << 1)
255 pub const mask: u32 = 1 << offset;
256 /// Read-only values (empty)
257 pub mod R {}
258 /// Write-only values (empty)
259 pub mod W {}
260 /// Read-write values (empty)
261 pub mod RW {}
262 }
263
264 /// SYSRESETREQ
265 pub mod SYSRESETREQ {
266 /// Offset (2 bits)
267 pub const offset: u32 = 2;
268 /// Mask (1 bit: 1 << 2)
269 pub const mask: u32 = 1 << offset;
270 /// Read-only values (empty)
271 pub mod R {}
272 /// Write-only values (empty)
273 pub mod W {}
274 /// Read-write values (empty)
275 pub mod RW {}
276 }
277
278 /// PRIGROUP
279 pub mod PRIGROUP {
280 /// Offset (8 bits)
281 pub const offset: u32 = 8;
282 /// Mask (3 bits: 0b111 << 8)
283 pub const mask: u32 = 0b111 << offset;
284 /// Read-only values (empty)
285 pub mod R {}
286 /// Write-only values (empty)
287 pub mod W {}
288 /// Read-write values (empty)
289 pub mod RW {}
290 }
291
292 /// ENDIANESS
293 pub mod ENDIANESS {
294 /// Offset (15 bits)
295 pub const offset: u32 = 15;
296 /// Mask (1 bit: 1 << 15)
297 pub const mask: u32 = 1 << offset;
298 /// Read-only values (empty)
299 pub mod R {}
300 /// Write-only values (empty)
301 pub mod W {}
302 /// Read-write values (empty)
303 pub mod RW {}
304 }
305
306 /// Register key
307 pub mod VECTKEYSTAT {
308 /// Offset (16 bits)
309 pub const offset: u32 = 16;
310 /// Mask (16 bits: 0xffff << 16)
311 pub const mask: u32 = 0xffff << offset;
312 /// Read-only values (empty)
313 pub mod R {}
314 /// Write-only values (empty)
315 pub mod W {}
316 /// Read-write values (empty)
317 pub mod RW {}
318 }
319}
320
321/// System control register
322pub mod SCR {
323
324 /// SLEEPONEXIT
325 pub mod SLEEPONEXIT {
326 /// Offset (1 bits)
327 pub const offset: u32 = 1;
328 /// Mask (1 bit: 1 << 1)
329 pub const mask: u32 = 1 << offset;
330 /// Read-only values (empty)
331 pub mod R {}
332 /// Write-only values (empty)
333 pub mod W {}
334 /// Read-write values (empty)
335 pub mod RW {}
336 }
337
338 /// SLEEPDEEP
339 pub mod SLEEPDEEP {
340 /// Offset (2 bits)
341 pub const offset: u32 = 2;
342 /// Mask (1 bit: 1 << 2)
343 pub const mask: u32 = 1 << offset;
344 /// Read-only values (empty)
345 pub mod R {}
346 /// Write-only values (empty)
347 pub mod W {}
348 /// Read-write values (empty)
349 pub mod RW {}
350 }
351
352 /// Send Event on Pending bit
353 pub mod SEVEONPEND {
354 /// Offset (4 bits)
355 pub const offset: u32 = 4;
356 /// Mask (1 bit: 1 << 4)
357 pub const mask: u32 = 1 << offset;
358 /// Read-only values (empty)
359 pub mod R {}
360 /// Write-only values (empty)
361 pub mod W {}
362 /// Read-write values (empty)
363 pub mod RW {}
364 }
365}
366
367/// Configuration and control register
368pub mod CCR {
369
370 /// Configures how the processor enters Thread mode
371 pub mod NONBASETHRDENA {
372 /// Offset (0 bits)
373 pub const offset: u32 = 0;
374 /// Mask (1 bit: 1 << 0)
375 pub const mask: u32 = 1 << offset;
376 /// Read-only values (empty)
377 pub mod R {}
378 /// Write-only values (empty)
379 pub mod W {}
380 /// Read-write values (empty)
381 pub mod RW {}
382 }
383
384 /// USERSETMPEND
385 pub mod USERSETMPEND {
386 /// Offset (1 bits)
387 pub const offset: u32 = 1;
388 /// Mask (1 bit: 1 << 1)
389 pub const mask: u32 = 1 << offset;
390 /// Read-only values (empty)
391 pub mod R {}
392 /// Write-only values (empty)
393 pub mod W {}
394 /// Read-write values (empty)
395 pub mod RW {}
396 }
397
398 /// UNALIGN_ TRP
399 pub mod UNALIGN__TRP {
400 /// Offset (3 bits)
401 pub const offset: u32 = 3;
402 /// Mask (1 bit: 1 << 3)
403 pub const mask: u32 = 1 << offset;
404 /// Read-only values (empty)
405 pub mod R {}
406 /// Write-only values (empty)
407 pub mod W {}
408 /// Read-write values (empty)
409 pub mod RW {}
410 }
411
412 /// DIV_0_TRP
413 pub mod DIV_0_TRP {
414 /// Offset (4 bits)
415 pub const offset: u32 = 4;
416 /// Mask (1 bit: 1 << 4)
417 pub const mask: u32 = 1 << offset;
418 /// Read-only values (empty)
419 pub mod R {}
420 /// Write-only values (empty)
421 pub mod W {}
422 /// Read-write values (empty)
423 pub mod RW {}
424 }
425
426 /// BFHFNMIGN
427 pub mod BFHFNMIGN {
428 /// Offset (8 bits)
429 pub const offset: u32 = 8;
430 /// Mask (1 bit: 1 << 8)
431 pub const mask: u32 = 1 << offset;
432 /// Read-only values (empty)
433 pub mod R {}
434 /// Write-only values (empty)
435 pub mod W {}
436 /// Read-write values (empty)
437 pub mod RW {}
438 }
439
440 /// STKALIGN
441 pub mod STKALIGN {
442 /// Offset (9 bits)
443 pub const offset: u32 = 9;
444 /// Mask (1 bit: 1 << 9)
445 pub const mask: u32 = 1 << offset;
446 /// Read-only values (empty)
447 pub mod R {}
448 /// Write-only values (empty)
449 pub mod W {}
450 /// Read-write values (empty)
451 pub mod RW {}
452 }
453}
454
455/// System handler priority registers
456pub mod SHPR1 {
457
458 /// Priority of system handler 4
459 pub mod PRI_4 {
460 /// Offset (0 bits)
461 pub const offset: u32 = 0;
462 /// Mask (8 bits: 0xff << 0)
463 pub const mask: u32 = 0xff << offset;
464 /// Read-only values (empty)
465 pub mod R {}
466 /// Write-only values (empty)
467 pub mod W {}
468 /// Read-write values (empty)
469 pub mod RW {}
470 }
471
472 /// Priority of system handler 5
473 pub mod PRI_5 {
474 /// Offset (8 bits)
475 pub const offset: u32 = 8;
476 /// Mask (8 bits: 0xff << 8)
477 pub const mask: u32 = 0xff << offset;
478 /// Read-only values (empty)
479 pub mod R {}
480 /// Write-only values (empty)
481 pub mod W {}
482 /// Read-write values (empty)
483 pub mod RW {}
484 }
485
486 /// Priority of system handler 6
487 pub mod PRI_6 {
488 /// Offset (16 bits)
489 pub const offset: u32 = 16;
490 /// Mask (8 bits: 0xff << 16)
491 pub const mask: u32 = 0xff << offset;
492 /// Read-only values (empty)
493 pub mod R {}
494 /// Write-only values (empty)
495 pub mod W {}
496 /// Read-write values (empty)
497 pub mod RW {}
498 }
499}
500
501/// System handler priority registers
502pub mod SHPR2 {
503
504 /// Priority of system handler 11
505 pub mod PRI_11 {
506 /// Offset (24 bits)
507 pub const offset: u32 = 24;
508 /// Mask (8 bits: 0xff << 24)
509 pub const mask: u32 = 0xff << offset;
510 /// Read-only values (empty)
511 pub mod R {}
512 /// Write-only values (empty)
513 pub mod W {}
514 /// Read-write values (empty)
515 pub mod RW {}
516 }
517}
518
519/// System handler priority registers
520pub mod SHPR3 {
521
522 /// Priority of system handler 14
523 pub mod PRI_14 {
524 /// Offset (16 bits)
525 pub const offset: u32 = 16;
526 /// Mask (8 bits: 0xff << 16)
527 pub const mask: u32 = 0xff << offset;
528 /// Read-only values (empty)
529 pub mod R {}
530 /// Write-only values (empty)
531 pub mod W {}
532 /// Read-write values (empty)
533 pub mod RW {}
534 }
535
536 /// Priority of system handler 15
537 pub mod PRI_15 {
538 /// Offset (24 bits)
539 pub const offset: u32 = 24;
540 /// Mask (8 bits: 0xff << 24)
541 pub const mask: u32 = 0xff << offset;
542 /// Read-only values (empty)
543 pub mod R {}
544 /// Write-only values (empty)
545 pub mod W {}
546 /// Read-write values (empty)
547 pub mod RW {}
548 }
549}
550
551/// System handler control and state register
552pub mod SHCRS {
553
554 /// Memory management fault exception active bit
555 pub mod MEMFAULTACT {
556 /// Offset (0 bits)
557 pub const offset: u32 = 0;
558 /// Mask (1 bit: 1 << 0)
559 pub const mask: u32 = 1 << offset;
560 /// Read-only values (empty)
561 pub mod R {}
562 /// Write-only values (empty)
563 pub mod W {}
564 /// Read-write values (empty)
565 pub mod RW {}
566 }
567
568 /// Bus fault exception active bit
569 pub mod BUSFAULTACT {
570 /// Offset (1 bits)
571 pub const offset: u32 = 1;
572 /// Mask (1 bit: 1 << 1)
573 pub const mask: u32 = 1 << offset;
574 /// Read-only values (empty)
575 pub mod R {}
576 /// Write-only values (empty)
577 pub mod W {}
578 /// Read-write values (empty)
579 pub mod RW {}
580 }
581
582 /// Usage fault exception active bit
583 pub mod USGFAULTACT {
584 /// Offset (3 bits)
585 pub const offset: u32 = 3;
586 /// Mask (1 bit: 1 << 3)
587 pub const mask: u32 = 1 << offset;
588 /// Read-only values (empty)
589 pub mod R {}
590 /// Write-only values (empty)
591 pub mod W {}
592 /// Read-write values (empty)
593 pub mod RW {}
594 }
595
596 /// SVC call active bit
597 pub mod SVCALLACT {
598 /// Offset (7 bits)
599 pub const offset: u32 = 7;
600 /// Mask (1 bit: 1 << 7)
601 pub const mask: u32 = 1 << offset;
602 /// Read-only values (empty)
603 pub mod R {}
604 /// Write-only values (empty)
605 pub mod W {}
606 /// Read-write values (empty)
607 pub mod RW {}
608 }
609
610 /// Debug monitor active bit
611 pub mod MONITORACT {
612 /// Offset (8 bits)
613 pub const offset: u32 = 8;
614 /// Mask (1 bit: 1 << 8)
615 pub const mask: u32 = 1 << offset;
616 /// Read-only values (empty)
617 pub mod R {}
618 /// Write-only values (empty)
619 pub mod W {}
620 /// Read-write values (empty)
621 pub mod RW {}
622 }
623
624 /// PendSV exception active bit
625 pub mod PENDSVACT {
626 /// Offset (10 bits)
627 pub const offset: u32 = 10;
628 /// Mask (1 bit: 1 << 10)
629 pub const mask: u32 = 1 << offset;
630 /// Read-only values (empty)
631 pub mod R {}
632 /// Write-only values (empty)
633 pub mod W {}
634 /// Read-write values (empty)
635 pub mod RW {}
636 }
637
638 /// SysTick exception active bit
639 pub mod SYSTICKACT {
640 /// Offset (11 bits)
641 pub const offset: u32 = 11;
642 /// Mask (1 bit: 1 << 11)
643 pub const mask: u32 = 1 << offset;
644 /// Read-only values (empty)
645 pub mod R {}
646 /// Write-only values (empty)
647 pub mod W {}
648 /// Read-write values (empty)
649 pub mod RW {}
650 }
651
652 /// Usage fault exception pending bit
653 pub mod USGFAULTPENDED {
654 /// Offset (12 bits)
655 pub const offset: u32 = 12;
656 /// Mask (1 bit: 1 << 12)
657 pub const mask: u32 = 1 << offset;
658 /// Read-only values (empty)
659 pub mod R {}
660 /// Write-only values (empty)
661 pub mod W {}
662 /// Read-write values (empty)
663 pub mod RW {}
664 }
665
666 /// Memory management fault exception pending bit
667 pub mod MEMFAULTPENDED {
668 /// Offset (13 bits)
669 pub const offset: u32 = 13;
670 /// Mask (1 bit: 1 << 13)
671 pub const mask: u32 = 1 << offset;
672 /// Read-only values (empty)
673 pub mod R {}
674 /// Write-only values (empty)
675 pub mod W {}
676 /// Read-write values (empty)
677 pub mod RW {}
678 }
679
680 /// Bus fault exception pending bit
681 pub mod BUSFAULTPENDED {
682 /// Offset (14 bits)
683 pub const offset: u32 = 14;
684 /// Mask (1 bit: 1 << 14)
685 pub const mask: u32 = 1 << offset;
686 /// Read-only values (empty)
687 pub mod R {}
688 /// Write-only values (empty)
689 pub mod W {}
690 /// Read-write values (empty)
691 pub mod RW {}
692 }
693
694 /// SVC call pending bit
695 pub mod SVCALLPENDED {
696 /// Offset (15 bits)
697 pub const offset: u32 = 15;
698 /// Mask (1 bit: 1 << 15)
699 pub const mask: u32 = 1 << offset;
700 /// Read-only values (empty)
701 pub mod R {}
702 /// Write-only values (empty)
703 pub mod W {}
704 /// Read-write values (empty)
705 pub mod RW {}
706 }
707
708 /// Memory management fault enable bit
709 pub mod MEMFAULTENA {
710 /// Offset (16 bits)
711 pub const offset: u32 = 16;
712 /// Mask (1 bit: 1 << 16)
713 pub const mask: u32 = 1 << offset;
714 /// Read-only values (empty)
715 pub mod R {}
716 /// Write-only values (empty)
717 pub mod W {}
718 /// Read-write values (empty)
719 pub mod RW {}
720 }
721
722 /// Bus fault enable bit
723 pub mod BUSFAULTENA {
724 /// Offset (17 bits)
725 pub const offset: u32 = 17;
726 /// Mask (1 bit: 1 << 17)
727 pub const mask: u32 = 1 << offset;
728 /// Read-only values (empty)
729 pub mod R {}
730 /// Write-only values (empty)
731 pub mod W {}
732 /// Read-write values (empty)
733 pub mod RW {}
734 }
735
736 /// Usage fault enable bit
737 pub mod USGFAULTENA {
738 /// Offset (18 bits)
739 pub const offset: u32 = 18;
740 /// Mask (1 bit: 1 << 18)
741 pub const mask: u32 = 1 << offset;
742 /// Read-only values (empty)
743 pub mod R {}
744 /// Write-only values (empty)
745 pub mod W {}
746 /// Read-write values (empty)
747 pub mod RW {}
748 }
749}
750
751/// Configurable fault status register
752pub mod CFSR_UFSR_BFSR_MMFSR {
753
754 /// Instruction access violation flag
755 pub mod IACCVIOL {
756 /// Offset (1 bits)
757 pub const offset: u32 = 1;
758 /// Mask (1 bit: 1 << 1)
759 pub const mask: u32 = 1 << offset;
760 /// Read-only values (empty)
761 pub mod R {}
762 /// Write-only values (empty)
763 pub mod W {}
764 /// Read-write values (empty)
765 pub mod RW {}
766 }
767
768 /// Memory manager fault on unstacking for a return from exception
769 pub mod MUNSTKERR {
770 /// Offset (3 bits)
771 pub const offset: u32 = 3;
772 /// Mask (1 bit: 1 << 3)
773 pub const mask: u32 = 1 << offset;
774 /// Read-only values (empty)
775 pub mod R {}
776 /// Write-only values (empty)
777 pub mod W {}
778 /// Read-write values (empty)
779 pub mod RW {}
780 }
781
782 /// Memory manager fault on stacking for exception entry.
783 pub mod MSTKERR {
784 /// Offset (4 bits)
785 pub const offset: u32 = 4;
786 /// Mask (1 bit: 1 << 4)
787 pub const mask: u32 = 1 << offset;
788 /// Read-only values (empty)
789 pub mod R {}
790 /// Write-only values (empty)
791 pub mod W {}
792 /// Read-write values (empty)
793 pub mod RW {}
794 }
795
796 /// MLSPERR
797 pub mod MLSPERR {
798 /// Offset (5 bits)
799 pub const offset: u32 = 5;
800 /// Mask (1 bit: 1 << 5)
801 pub const mask: u32 = 1 << offset;
802 /// Read-only values (empty)
803 pub mod R {}
804 /// Write-only values (empty)
805 pub mod W {}
806 /// Read-write values (empty)
807 pub mod RW {}
808 }
809
810 /// Memory Management Fault Address Register (MMAR) valid flag
811 pub mod MMARVALID {
812 /// Offset (7 bits)
813 pub const offset: u32 = 7;
814 /// Mask (1 bit: 1 << 7)
815 pub const mask: u32 = 1 << offset;
816 /// Read-only values (empty)
817 pub mod R {}
818 /// Write-only values (empty)
819 pub mod W {}
820 /// Read-write values (empty)
821 pub mod RW {}
822 }
823
824 /// Instruction bus error
825 pub mod IBUSERR {
826 /// Offset (8 bits)
827 pub const offset: u32 = 8;
828 /// Mask (1 bit: 1 << 8)
829 pub const mask: u32 = 1 << offset;
830 /// Read-only values (empty)
831 pub mod R {}
832 /// Write-only values (empty)
833 pub mod W {}
834 /// Read-write values (empty)
835 pub mod RW {}
836 }
837
838 /// Precise data bus error
839 pub mod PRECISERR {
840 /// Offset (9 bits)
841 pub const offset: u32 = 9;
842 /// Mask (1 bit: 1 << 9)
843 pub const mask: u32 = 1 << offset;
844 /// Read-only values (empty)
845 pub mod R {}
846 /// Write-only values (empty)
847 pub mod W {}
848 /// Read-write values (empty)
849 pub mod RW {}
850 }
851
852 /// Imprecise data bus error
853 pub mod IMPRECISERR {
854 /// Offset (10 bits)
855 pub const offset: u32 = 10;
856 /// Mask (1 bit: 1 << 10)
857 pub const mask: u32 = 1 << offset;
858 /// Read-only values (empty)
859 pub mod R {}
860 /// Write-only values (empty)
861 pub mod W {}
862 /// Read-write values (empty)
863 pub mod RW {}
864 }
865
866 /// Bus fault on unstacking for a return from exception
867 pub mod UNSTKERR {
868 /// Offset (11 bits)
869 pub const offset: u32 = 11;
870 /// Mask (1 bit: 1 << 11)
871 pub const mask: u32 = 1 << offset;
872 /// Read-only values (empty)
873 pub mod R {}
874 /// Write-only values (empty)
875 pub mod W {}
876 /// Read-write values (empty)
877 pub mod RW {}
878 }
879
880 /// Bus fault on stacking for exception entry
881 pub mod STKERR {
882 /// Offset (12 bits)
883 pub const offset: u32 = 12;
884 /// Mask (1 bit: 1 << 12)
885 pub const mask: u32 = 1 << offset;
886 /// Read-only values (empty)
887 pub mod R {}
888 /// Write-only values (empty)
889 pub mod W {}
890 /// Read-write values (empty)
891 pub mod RW {}
892 }
893
894 /// Bus fault on floating-point lazy state preservation
895 pub mod LSPERR {
896 /// Offset (13 bits)
897 pub const offset: u32 = 13;
898 /// Mask (1 bit: 1 << 13)
899 pub const mask: u32 = 1 << offset;
900 /// Read-only values (empty)
901 pub mod R {}
902 /// Write-only values (empty)
903 pub mod W {}
904 /// Read-write values (empty)
905 pub mod RW {}
906 }
907
908 /// Bus Fault Address Register (BFAR) valid flag
909 pub mod BFARVALID {
910 /// Offset (15 bits)
911 pub const offset: u32 = 15;
912 /// Mask (1 bit: 1 << 15)
913 pub const mask: u32 = 1 << offset;
914 /// Read-only values (empty)
915 pub mod R {}
916 /// Write-only values (empty)
917 pub mod W {}
918 /// Read-write values (empty)
919 pub mod RW {}
920 }
921
922 /// Undefined instruction usage fault
923 pub mod UNDEFINSTR {
924 /// Offset (16 bits)
925 pub const offset: u32 = 16;
926 /// Mask (1 bit: 1 << 16)
927 pub const mask: u32 = 1 << offset;
928 /// Read-only values (empty)
929 pub mod R {}
930 /// Write-only values (empty)
931 pub mod W {}
932 /// Read-write values (empty)
933 pub mod RW {}
934 }
935
936 /// Invalid state usage fault
937 pub mod INVSTATE {
938 /// Offset (17 bits)
939 pub const offset: u32 = 17;
940 /// Mask (1 bit: 1 << 17)
941 pub const mask: u32 = 1 << offset;
942 /// Read-only values (empty)
943 pub mod R {}
944 /// Write-only values (empty)
945 pub mod W {}
946 /// Read-write values (empty)
947 pub mod RW {}
948 }
949
950 /// Invalid PC load usage fault
951 pub mod INVPC {
952 /// Offset (18 bits)
953 pub const offset: u32 = 18;
954 /// Mask (1 bit: 1 << 18)
955 pub const mask: u32 = 1 << offset;
956 /// Read-only values (empty)
957 pub mod R {}
958 /// Write-only values (empty)
959 pub mod W {}
960 /// Read-write values (empty)
961 pub mod RW {}
962 }
963
964 /// No coprocessor usage fault.
965 pub mod NOCP {
966 /// Offset (19 bits)
967 pub const offset: u32 = 19;
968 /// Mask (1 bit: 1 << 19)
969 pub const mask: u32 = 1 << offset;
970 /// Read-only values (empty)
971 pub mod R {}
972 /// Write-only values (empty)
973 pub mod W {}
974 /// Read-write values (empty)
975 pub mod RW {}
976 }
977
978 /// Unaligned access usage fault
979 pub mod UNALIGNED {
980 /// Offset (24 bits)
981 pub const offset: u32 = 24;
982 /// Mask (1 bit: 1 << 24)
983 pub const mask: u32 = 1 << offset;
984 /// Read-only values (empty)
985 pub mod R {}
986 /// Write-only values (empty)
987 pub mod W {}
988 /// Read-write values (empty)
989 pub mod RW {}
990 }
991
992 /// Divide by zero usage fault
993 pub mod DIVBYZERO {
994 /// Offset (25 bits)
995 pub const offset: u32 = 25;
996 /// Mask (1 bit: 1 << 25)
997 pub const mask: u32 = 1 << offset;
998 /// Read-only values (empty)
999 pub mod R {}
1000 /// Write-only values (empty)
1001 pub mod W {}
1002 /// Read-write values (empty)
1003 pub mod RW {}
1004 }
1005}
1006
1007/// Hard fault status register
1008pub mod HFSR {
1009
1010 /// Vector table hard fault
1011 pub mod VECTTBL {
1012 /// Offset (1 bits)
1013 pub const offset: u32 = 1;
1014 /// Mask (1 bit: 1 << 1)
1015 pub const mask: u32 = 1 << offset;
1016 /// Read-only values (empty)
1017 pub mod R {}
1018 /// Write-only values (empty)
1019 pub mod W {}
1020 /// Read-write values (empty)
1021 pub mod RW {}
1022 }
1023
1024 /// Forced hard fault
1025 pub mod FORCED {
1026 /// Offset (30 bits)
1027 pub const offset: u32 = 30;
1028 /// Mask (1 bit: 1 << 30)
1029 pub const mask: u32 = 1 << offset;
1030 /// Read-only values (empty)
1031 pub mod R {}
1032 /// Write-only values (empty)
1033 pub mod W {}
1034 /// Read-write values (empty)
1035 pub mod RW {}
1036 }
1037
1038 /// Reserved for Debug use
1039 pub mod DEBUG_VT {
1040 /// Offset (31 bits)
1041 pub const offset: u32 = 31;
1042 /// Mask (1 bit: 1 << 31)
1043 pub const mask: u32 = 1 << offset;
1044 /// Read-only values (empty)
1045 pub mod R {}
1046 /// Write-only values (empty)
1047 pub mod W {}
1048 /// Read-write values (empty)
1049 pub mod RW {}
1050 }
1051}
1052
1053/// Memory management fault address register
1054pub mod MMFAR {
1055
1056 /// Memory management fault address
1057 pub mod MMFAR {
1058 /// Offset (0 bits)
1059 pub const offset: u32 = 0;
1060 /// Mask (32 bits: 0xffffffff << 0)
1061 pub const mask: u32 = 0xffffffff << offset;
1062 /// Read-only values (empty)
1063 pub mod R {}
1064 /// Write-only values (empty)
1065 pub mod W {}
1066 /// Read-write values (empty)
1067 pub mod RW {}
1068 }
1069}
1070
1071/// Bus fault address register
1072pub mod BFAR {
1073
1074 /// Bus fault address
1075 pub mod BFAR {
1076 /// Offset (0 bits)
1077 pub const offset: u32 = 0;
1078 /// Mask (32 bits: 0xffffffff << 0)
1079 pub const mask: u32 = 0xffffffff << offset;
1080 /// Read-only values (empty)
1081 pub mod R {}
1082 /// Write-only values (empty)
1083 pub mod W {}
1084 /// Read-write values (empty)
1085 pub mod RW {}
1086 }
1087}
1088
1089/// Auxiliary fault status register
1090pub mod AFSR {
1091
1092 /// Implementation defined
1093 pub mod IMPDEF {
1094 /// Offset (0 bits)
1095 pub const offset: u32 = 0;
1096 /// Mask (32 bits: 0xffffffff << 0)
1097 pub const mask: u32 = 0xffffffff << offset;
1098 /// Read-only values (empty)
1099 pub mod R {}
1100 /// Write-only values (empty)
1101 pub mod W {}
1102 /// Read-write values (empty)
1103 pub mod RW {}
1104 }
1105}
1106#[repr(C)]
1107pub struct RegisterBlock {
1108 /// CPUID base register
1109 pub CPUID: RORegister<u32>,
1110
1111 /// Interrupt control and state register
1112 pub ICSR: RWRegister<u32>,
1113
1114 /// Vector table offset register
1115 pub VTOR: RWRegister<u32>,
1116
1117 /// Application interrupt and reset control register
1118 pub AIRCR: RWRegister<u32>,
1119
1120 /// System control register
1121 pub SCR: RWRegister<u32>,
1122
1123 /// Configuration and control register
1124 pub CCR: RWRegister<u32>,
1125
1126 /// System handler priority registers
1127 pub SHPR1: RWRegister<u32>,
1128
1129 /// System handler priority registers
1130 pub SHPR2: RWRegister<u32>,
1131
1132 /// System handler priority registers
1133 pub SHPR3: RWRegister<u32>,
1134
1135 /// System handler control and state register
1136 pub SHCRS: RWRegister<u32>,
1137
1138 /// Configurable fault status register
1139 pub CFSR_UFSR_BFSR_MMFSR: RWRegister<u32>,
1140
1141 /// Hard fault status register
1142 pub HFSR: RWRegister<u32>,
1143
1144 _reserved1: [u8; 4],
1145
1146 /// Memory management fault address register
1147 pub MMFAR: RWRegister<u32>,
1148
1149 /// Bus fault address register
1150 pub BFAR: RWRegister<u32>,
1151
1152 /// Auxiliary fault status register
1153 pub AFSR: RWRegister<u32>,
1154}
1155pub struct ResetValues {
1156 pub CPUID: u32,
1157 pub ICSR: u32,
1158 pub VTOR: u32,
1159 pub AIRCR: u32,
1160 pub SCR: u32,
1161 pub CCR: u32,
1162 pub SHPR1: u32,
1163 pub SHPR2: u32,
1164 pub SHPR3: u32,
1165 pub SHCRS: u32,
1166 pub CFSR_UFSR_BFSR_MMFSR: u32,
1167 pub HFSR: u32,
1168 pub MMFAR: u32,
1169 pub BFAR: u32,
1170 pub AFSR: u32,
1171}
1172#[cfg(not(feature = "nosync"))]
1173pub struct Instance {
1174 pub(crate) addr: u32,
1175 pub(crate) _marker: PhantomData<*const RegisterBlock>,
1176}
1177#[cfg(not(feature = "nosync"))]
1178impl ::core::ops::Deref for Instance {
1179 type Target = RegisterBlock;
1180 #[inline(always)]
1181 fn deref(&self) -> &RegisterBlock {
1182 unsafe { &*(self.addr as *const _) }
1183 }
1184}
1185#[cfg(feature = "rtic")]
1186unsafe impl Send for Instance {}