forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-05-15 d14dd3a2106de793fbe08dc5a12cf80defd3258a
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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
/**************************************************************************************************** 
 * @file     FM33A0XXEV.h
 *
 * @brief    CMSIS CORTEX-M0 Peripheral Access Layer Header File for
 *           FM33A0XXEV from Keil.
 *
 * @version  V0.0.1
 * @date     7 May 2020
 *
 * @note     Generated with SVDConv V2.87e 
 *           from CMSIS SVD File 'FM33A0XXEV.SVD' Version 1.0,
 *
 * @par      ARM Limited (ARM) is supplying this software for use with Cortex-M
 *           processor based microcontroller, but can be equally used for other
 *           suitable processor architectures. This file can be freely distributed.
 *           Modifications to this file shall be clearly marked.
 *
 *           THIS SOFTWARE IS PROVIDED “AS IS”. NO WARRANTIES, WHETHER EXPRESS, IMPLIED
 *           OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
 *           MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
 *           ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
 *           CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
 *
 *******************************************************************************************************/
 
 
/** @addtogroup Keil
  * @{
  */
 
/** @addtogroup FM33A0XXEV
  * @{
  */
 
#ifndef FM33A0XXEV_H
#define FM33A0XXEV_H
 
#ifdef __cplusplus
extern "C" {
#endif
 
typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus;
typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunState;
typedef enum {FAIL = 0, PASS = !FAIL} ErrorStatus;
 
#define __RCHF_INITIAL_CLOCK        (8000000)        /* Value of the Internal RC HIGH oscillator in Hz */
#define __RCMF_CLOCK                (2000000)        /* Value of the Internal RC 4M oscillator in Hz */
#define __RCLP_CLOCK               (32000)          /* Value of the Internal RC LOW oscillator in Hz */
#define __XTLF_CLOCK                (32768)          /* Value of the EXTERNAL oscillator in Hz */
 
 
/* -------------------------  Interrupt Number Definition  ------------------------ */
 
typedef enum {
 
/* ------------------  FM33A0XXEV Processor Exceptions Numbers  ------------------*/
  Reset_IRQn                    = -15,              /*!<   1  复位向量 */
  NMI_IRQn                      = -14,              /*!<   2  WKUPx中断低功耗模式错误中断 */
  HardFault_IRQn                = -13,              /*!<   3  HardFault中断向量 */
  SVC_IRQn                      = -5,               /*!<  11  SVCall系统服务请求 */
  PendSV_IRQn                   = -2,               /*!<  14  可挂起系统服务请求 */
  SysTick_IRQn                  = -1,               /*!<  15  内部定时器中断向量 */
 
/* --------------------  Cortex-M0 Specific Interrupt Numbers  --------------------*/
  WWDT_IRQn                     = 0,                /*!<   0  窗口看门狗中断 */
  SVD_IRQn                      = 1,                /*!<   1  电源监测报警中断 */
  RTC_IRQn                      = 2,                /*!<   2  RTC中断 */
  FLASH_IRQn                    = 3,                /*!<   3  NVMIF中断 */
  CMU_IRQn                      = 4,                /*!<   4  XTLF停振检测中断XTHF停振检测中断系统时钟切换错误中断 */
  ADC_IRQn                      = 5,                /*!<   5  ADC或CIC中断 */
  SPI0_IRQn                     = 6,                /*!<   6  SPI中断 */
  SPI1_IRQn                     = 7,                /*!<   7  SPI中断 */
  SPI2_IRQn                     = 8,                /*!<   8  SPI中断 */
  UART0_IRQn                    = 9,                /*!<   9  UART中断 */
  UART1_IRQn                    = 10,               /*!<  10  UART中断 */
  UART2_IRQn                    = 11,               /*!<  11  UART中断 */
  UART3_IRQn                    = 12,               /*!<  12  UART中断 */
  UART4_IRQn                    = 13,               /*!<  13  UART中断 */
  UART5_IRQn                    = 14,               /*!<  14  UART中断 */
  U7816_IRQn                    = 15,               /*!<  15  U7816中断 */
  LPUART0_IRQn                  = 16,               /*!<  16  低功耗UART中断 */
  I2Cx_IRQn                     = 17,               /*!<  17  I2C0&1中断 */
  RSV_IRQn                      = 18,               /*!<  18  NULL         */
  CRYPTO_IRQn                   = 19,               /*!<  19  加密算法或TRNG中断整合AES/PAE/HASH */
  LPTIM_IRQn                    = 20,               /*!<  20  低功耗定时器中断 */
  DMA_IRQn                      = 21,               /*!<  21  DMA中断 */
  WKUPx_IRQn                    = 22,               /*!<  22  WKUP引脚中断 */
  COMP_IRQn                     = 23,               /*!<  23  模拟比较器中断 */
  BTx_IRQn                      = 24,               /*!<  24  Basic Timer x中断 */
  QSPI_IRQn                     = 25,               /*!<  25  QuadSPI中断 */
  ETx_IRQn                      = 26,               /*!<  26  Extended Timer x中断 */
  BSTIM_IRQn                    = 27,               /*!<  27  基本定时器中断 */
  SPI3_IRQn                     = 28,               /*!<  28  SPI中断 */
  SPI4_IRQn                     = 29,               /*!<  29  SPI中断 */
  GPIO_IRQn                     = 30,               /*!<  30  外部引脚中断 */
  LPUART1_IRQn                  = 31,               /*!<  31  低功耗UART中断 */
 
} IRQn_Type;
 
 
/** @addtogroup Configuration_of_CMSIS
  * @{
  */
 
/* ================================================================================ */
/* ================      Processor and Core Peripheral Section     ================ */
/* ================================================================================ */
 
/* ----------------Configuration of the CORTEX-M0 Processor and Core Peripherals---------------- */
#define __CM0_REV                 0x0100            /*!< CORTEX-M0 Core Revision                                               */
#define __MPU_PRESENT                  1            /*!< MPU present or not                                                    */
#define __VTOR_PRESENT                 1           /*!< VTOR present or not                                                    */
#define __NVIC_PRIO_BITS               2            /*!< Number of Bits used for Priority Levels                               */
#define __Vendor_SysTickConfig         0            /*!< Set to 1 if different SysTick Config is used                          */
/** @} */ /* End of group Configuration_of_CMSIS */
 
#include "core_cm0plus.h"                            /*!< Cortex-M0 processor and core peripherals*/
#include "system_FM33A0XXEV.h"                       /*!< FM33A0XXEV System*/
 
/* ================================================================================ */
/* ================       Device Specific Peripheral Section       ================ */
/* ================================================================================ */
 
/** @addtogroup Device_Peripheral_Registers
  * @{
  */
 
/* -------------------  Start of section using anonymous unions  ------------------ */
#if defined(__CC_ARM)
  #pragma push
  #pragma anon_unions
#elif defined(__ICCARM__)
  #pragma language=extended
#elif defined(__GNUC__)
/* anonymous unions are enabled by default */
#elif defined(__TMS470__)
/* anonymous unions are enabled by default */
#elif defined(__TASKING__)
  #pragma warning 586
#else
#warning Not supported compiler type
#endif
 
 
/* ================================================================================ */
/* ================                       PMU                      ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t CR;                     /*!<  Power Management Control Register,                    Address offset: 0x00 */
  __IO uint32_t WKTR;                   /*!<  Wakeup Time Register,                                 Address offset: 0x04 */
  __IO uint32_t WKFR;                   /*!<  Wakeup Source Flags Register,                         Address offset: 0x08 */
  __IO uint32_t IER;                    /*!<  PMU Interrupt Enable Register,                        Address offset: 0x0C */
  __IO uint32_t ISR;                    /*!<  PMU Interrupt and Status Register,                    Address offset: 0x10 */
}PMU_Type;
 
 
/* ================================================================================ */
/* ================                       DBG                      ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t RSV1;                   /*!<  RESERVED REGISTER,                                    Address offset: 0x00 */
  __IO uint32_t CR;                     /*!<  Debug Configuration Register,                         Address offset: 0x04 */
  __IO uint32_t HDFR;                   /*!<  HardFault Flag Register,                              Address offset: 0x08 */
}DBG_Type;
 
 
/* ================================================================================ */
/* ================                       FLS                      ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t RDCR;                   /*!<  Flash Read Control Register,                          Address offset: 0x00 */
  __IO uint32_t PFCR;                   /*!<  Flash Prefetch Control Register,                      Address offset: 0x04 */
  __I  uint32_t OPTBR;                  /*!<  Flash Option Bytes Register,                          Address offset: 0x08 */
  __IO uint32_t RSV1[2];                /*!<  RESERVED REGISTER,                                    Address offset: 0x0C */
  __IO uint32_t EPCR;                   /*!<  Flash Erase/Program Control Register,                 Address offset: 0x14 */
  __O  uint32_t KEY;                    /*!<  Flash Key Register,                                   Address offset: 0x18 */
  __IO uint32_t IER;                    /*!<  Flash Interrupt Enable Register,                      Address offset: 0x1C */
  __IO uint32_t ISR;                    /*!<  Flash Interrupt Status Register,                      Address offset: 0x20 */
  __IO uint32_t RSV2[9];                /*!<  RESERVED REGISTER,                                    Address offset: 0x24 */
  __IO uint32_t ACLOCK1;                /*!<  Flash Application Code Lock Register1,                Address offset: 0x48 */
  __IO uint32_t ACLOCK2;                /*!<  Flash Application Code Lock Register2,                Address offset: 0x4C */
  __IO uint32_t ACLOCK3;                /*!<  Flash Application Code Lock Register1,                Address offset: 0x50 */
  __IO uint32_t ACLOCK4;                /*!<  Flash Application Code Lock Register2,                Address offset: 0x54 */
}FLS_Type;
 
 
/* ================================================================================ */
/* ================                       RMU                      ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t PDRCR;                  /*!<  PDR Control Register,                                 Address offset: 0x00 */
  __IO uint32_t BORCR;                  /*!<  BOR Control Register,                                 Address offset: 0x04 */
  __IO uint32_t RSTCFGR;                /*!<  Reset Config Register,                                Address offset: 0x08 */
  __O  uint32_t SOFTRST;                /*!<  Soft Reset Register,                                  Address offset: 0x0C */
  __IO uint32_t RSR;                    /*!<  Reset Status Register,                                Address offset: 0x10 */
  __O  uint32_t PRSTEN;                 /*!<  Peripheral Reset Enable Register,                     Address offset: 0x14 */
  __IO uint32_t AHBRST;                 /*!<  AHB Peripheral Reset Register,                        Address offset: 0x18 */
  __IO uint32_t APBRST1;                /*!<  APB Peripheral Reset Register1,                       Address offset: 0x1C */
  __IO uint32_t APBRST2;                /*!<  APB Peripheral Reset Register2,                       Address offset: 0x20 */
}RMU_Type;
 
 
/* ================================================================================ */
/* ================                      IWDT                      ================ */
/* ================================================================================ */
 
typedef struct
{
  __O  uint32_t SERV;                   /*!<  IWDT Serve Register,                                  Address offset: 0x00 */
  __IO uint32_t CFGR;                   /*!<  IWDT Config Register,                                 Address offset: 0x04 */
  __I uint32_t CNTR;                   /*!<   Counter Register,                                    Address offset: 0x08 */
}IWDT_Type;
 
 
/* ================================================================================ */
/* ================                      WWDT                      ================ */
/* ================================================================================ */
 
typedef struct
{
  __O  uint32_t CR;                     /*!<  WWDT Control Register,                                Address offset: 0x00 */
  __IO uint32_t CFGR;                   /*!<  WWDT Config Register,                                 Address offset: 0x04 */
  __I  uint32_t CNTR;                   /*!<  WWDT Counter Register,                                Address offset: 0x08 */
  __IO uint32_t IER;                    /*!<  WWDT Interrupt Enable Register,                       Address offset: 0x0C */
  __IO uint32_t ISR;                    /*!<  WWDT Interrupt Status Register,                       Address offset: 0x10 */
  __I  uint32_t PSCR;                   /*!<  WWDT Prescaler Register,                              Address offset: 0x14 */
}WWDT_Type;
 
 
/* ================================================================================ */
/* ================                      CMU                          ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t SYSCLKCR;               /*!<  System Clock Control Register,                        Address offset: 0x00 */
  __IO uint32_t RCHFCR;                 /*!<  RCHF Control Register,                                Address offset: 0x04 */
  __IO uint32_t RCHFTR;                 /*!<  RCHF Trim Register,                                   Address offset: 0x08 */
  __IO uint32_t PLLLCR;                 /*!<  PLL_L Control Register,                               Address offset: 0x0C */
  __IO uint32_t PLLHCR;                 /*!<  PLL_H Control Register,                               Address offset: 0x10 */
  __IO uint32_t XTHFCR;                 /*!<  XTHF Control Register,                                Address offset: 0x14 */
  __IO uint32_t IER;                    /*!<  Interrupt Enable Register,                            Address offset: 0x18 */
  __IO uint32_t ISR;                    /*!<  Interrupt Status Register,                            Address offset: 0x1C */
  __IO uint32_t PCLKCR1;                /*!<  Peripheral bus Clock Control Register1,               Address offset: 0x20 */
  __IO uint32_t PCLKCR2;                /*!<  Peripheral bus Clock Control Register2,               Address offset: 0x24 */
  __IO uint32_t PCLKCR3;                /*!<  Peripheral bus Clock Control Register3,               Address offset: 0x28 */
  __IO uint32_t PCLKCR4;                /*!<  Peripheral bus Clock Control Register4,               Address offset: 0x2C */
  __IO uint32_t OPCCR1;                 /*!<  Peripheral Operation Clock Control Register1,         Address offset: 0x30 */
  __IO uint32_t OPCCR2;                 /*!<  Peripheral Operation Clock Control Register2,         Address offset: 0x34 */
}CMU_Type;
 
/* ================================================================================ */
/* ================                      CDIF                      ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t CR;                     /*!<  CDIF Control Register,                                Address offset: 0x00 */
  __IO uint32_t PSCR;                   /*!<  CDIF Prescaler Register,                              Address offset: 0x04 */
}CDIF_Type;
 
 
/* ================================================================================ */
/* ================                      VRTC                      ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t PDRCR;                /*!<  RESERVED REGISTER,                                      Address offset: 0x00 */
  __IO uint32_t RSV1[4];                /*!<  RESERVED REGISTER,                                    Address offset: 0x04 */
  __IO uint32_t RCMFCR;                 /*!<  RCMF Control Register,                                Address offset: 0x14 */
  __IO uint32_t RCLPCR;                 /*!<  RCLP Control Register,                                Address offset: 0x18 */
  __IO uint32_t RCLPTR;                 /*!<  RCLP Control Register,                                Address offset: 0x1C */
  __IO uint32_t XTLFCR;                 /*!<  XTLF Control Register,                                Address offset: 0x20 */
  __IO uint32_t ADCCR;                  /*!<  ADC Clock Control Register,                           Address offset: 0x24 */
  __IO uint32_t LFDIER;                 /*!<  LFDET Interrupt Enable Register,                      Address offset: 0x28 */
  __IO uint32_t LFDISR;                 /*!<  LFDET Interrupt Status Register,                      Address offset: 0x2C */
}VRTC_Type;
 
 
/* ================================================================================ */
/* ================                       SVD                      ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t CFGR;                   /*!<  SVD Config Register,                                  Address offset: 0x00 */
  __IO uint32_t CR;                     /*!<  SVD Control Register,                                 Address offset: 0x04 */
  __IO uint32_t IER;                    /*!<  SVD Interrupt Enable Register,                        Address offset: 0x08 */
  __IO uint32_t ISR;                    /*!<  SVD Interrupt Status Register,                        Address offset: 0x0C */
  __IO uint32_t VSR;                    /*!<  SVD reference Voltage Select Register,                Address offset: 0x10 */
}SVD_Type;
 
 
/* ================================================================================ */
/* ================                       AES                      ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t CR;                     /*!<  AES Control Register,                                 Address offset: 0x00 */
  __IO uint32_t IER;                    /*!<  AES Interrupt Enable Register,                        Address offset: 0x04 */
  __IO uint32_t ISR;                    /*!<   Interrupt Status Register,                           Address offset: 0x08 */
  __IO uint32_t DIR;                    /*!<  AES Data Input Register,                              Address offset: 0x0C */
  __I  uint32_t DOR;                    /*!<  AES Data Output Register,                             Address offset: 0x10 */
  __O  uint32_t KEY0;                   /*!<  AES Key Register 0,                                   Address offset: 0x14 */
  __O  uint32_t KEY1;                   /*!<  AES Key Register 1,                                   Address offset: 0x18 */
  __O  uint32_t KEY2;                   /*!<  AES Key Register 2,                                   Address offset: 0x1C */
  __O  uint32_t KEY3;                   /*!<  AES Key Register 3,                                   Address offset: 0x20 */
  __O  uint32_t KEY4;                   /*!<  AES Key Register 4,                                   Address offset: 0x24 */
  __O  uint32_t KEY5;                   /*!<  AES Key Register 5,                                   Address offset: 0x28 */
  __O  uint32_t KEY6;                   /*!<  AES Key Register 6,                                   Address offset: 0x2C */
  __O  uint32_t KEY7;                   /*!<  AES Key Register 7,                                   Address offset: 0x30 */
  __IO uint32_t IVR0;                   /*!<  AES Initial Vector Register 0,                        Address offset: 0x34 */
  __IO uint32_t IVR1;                   /*!<  AES Initial Vector Register 1,                        Address offset: 0x38 */
  __IO uint32_t IVR2;                   /*!<  AES Initial Vector Register 2,                        Address offset: 0x3C */
  __IO uint32_t IVR3;                   /*!<  AES Initial Vector Register 3,                        Address offset: 0x40 */
  __IO uint32_t H0;                     /*!<  AES MultH parameter Register 0,                       Address offset: 0x44 */
  __IO uint32_t H1;                     /*!<  AES MultH parameter Register 1,                       Address offset: 0x48 */
  __IO uint32_t H2;                     /*!<  AES MultH parameter Register 2,                       Address offset: 0x4C */
  __IO uint32_t H3;                     /*!<  AES MultH parameter Register 3,                       Address offset: 0x50 */
}AES_Type;
 
 
/* ================================================================================ */
/* ================                       PAE                      ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t CSR;                    /*!<  ,                                                     Address offset: 0x00 */
  __IO uint32_t MLR;                    /*!<  ,                                                     Address offset: 0x04 */
  __O  uint32_t MPR;                    /*!<  ,                                                     Address offset: 0x08 */
  __IO uint32_t M0CFG;                  /*!<  ,                                                     Address offset: 0x0C */
  __IO uint32_t M1CFG;                  /*!<  ,                                                     Address offset: 0x10 */
  __IO uint32_t M2CFG;                  /*!<  ,                                                     Address offset: 0x14 */
  __IO uint32_t M3CFG;                  /*!<  ,                                                     Address offset: 0x18 */
  __O  uint32_t WORD;                   /*!<  ,                                                     Address offset: 0x1C */
}PAE_Type;
 
 
/* ================================================================================ */
/* ================                     HASH                       ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t CSR;                    /*!<  Hash Control and Status Register,                     Address offset: 0x00 */
  __IO uint32_t DTR;                    /*!<  Hash Data Type Register,                              Address offset: 0x04 */
}HASH_Type;
 
 
/* ================================================================================ */
/* ================                       RNG                      ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t CR;                     /*!<  Random Number Generator Control Register,             Address offset: 0x00 */
  __I  uint32_t DOR;                    /*!<  Random Number Generator Data Output Register,         Address offset: 0x04 */
  __IO uint32_t RSV1[2];                /*!<  RESERVED REGISTER,                                    Address offset: 0x08 */
  __IO uint32_t SR;                     /*!<  Random Number Generator Status Register,              Address offset: 0x10 */
  __IO uint32_t CRC_CR;                 /*!<  CRC Control Register,                                 Address offset: 0x14 */
  __IO uint32_t CRC_DIR;                /*!<  CRC Data input Register,                              Address offset: 0x18 */
  __IO uint32_t CRC_SR;                 /*!<  CRC Status Register,                                  Address offset: 0x1C */
}RNG_Type;
 
 
/* ================================================================================ */
/* ================                      COMP                      ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t CR1;                    /*!<  ,                                                     Address offset: 0x00 */
  __IO uint32_t CR2;                    /*!<  ,                                                     Address offset: 0x04 */
  __IO uint32_t ICR;                    /*!<  ,                                                     Address offset: 0x08 */
  __IO uint32_t ISR;                    /*!<  ,                                                     Address offset: 0x0C */
  __IO uint32_t PCR;                    /*!<  ,                                                     Address offset: 0x010 */ 
}COMP_Type;
 
 
/* ================================================================================ */
/* ================                      I2C                       ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t CFGR;               /*!<  I2C Master Config Register,                           Address offset: 0x00 */
  __IO uint32_t CR;                 /*!<  I2C Master Control Register,                          Address offset: 0x04 */
  __IO uint32_t IER;                /*!<  I2C Master Interrupt Enable Register,                 Address offset: 0x08 */
  __IO uint32_t ISR;                /*!<  I2C Master Interrupt Status Register,                 Address offset: 0x0C */
  __IO uint32_t SR;                 /*!<  I2C Master Status Register,                           Address offset: 0x10 */
  __IO uint32_t BRG;                /*!<  I2C Master Baud Rate Generation Register,             Address offset: 0x14 */
  __IO uint32_t BUF;                /*!<  I2C Master Buffer Register,                           Address offset: 0x18 */
  __IO uint32_t TIMING;             /*!<  I2C Master Timing Register,                           Address offset: 0x1C */
  __IO uint32_t TO;                 /*!<  I2C Master Time-Out Register,                         Address offset: 0x20 */
}I2C_Type;
 
 
/* ================================================================================ */
/* ================                      UARTIR                    ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t CR;                   /*!<  Infrared modulation Control Register,                 Address offset: 0x00 */
}UARTIR_Type;
 
 
/* ================================================================================ */
/* ================                      UART                      ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t CSR;                    /*!<  UARTx Control Status Register,                        Address offset: 0x00 */
  __IO uint32_t IER;                    /*!<  UARTx Interrupt Enable Register,                      Address offset: 0x04 */
  __IO uint32_t ISR;                    /*!<  UARTx Interrupt Status Register,                      Address offset: 0x08 */
  __IO uint32_t TODR;                   /*!<  UARTx Time-Out and Delay Register,                    Address offset: 0x0C */
  __I  uint32_t RXBUF;                  /*!<  UARTx Receive Buffer,                                 Address offset: 0x10 */
  __IO uint32_t TXBUF;                  /*!<  UARTx Transmit Buffer,                                Address offset: 0x14 */
  __IO uint32_t BGR;                    /*!<  UARTx Baud rate Generator Register,                   Address offset: 0x18 */
}UART_Type;
 
 
/* ================================================================================ */
/* ================                       LPUART                   ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t CSR;                    /*!<   Control Status Register,                             Address offset: 0x00 */
  __IO uint32_t IER;                    /*!<   Interrupt Enable Register,                           Address offset: 0x04 */
  __IO uint32_t ISR;                    /*!<   Interrupt Status Register,                           Address offset: 0x08 */
  __IO uint32_t BMR;                    /*!<   Baud rate Modulation Register,                       Address offset: 0x0C */
  __IO uint32_t RXBUF;                  /*!<   Receive Buffer Register,                             Address offset: 0x10 */
  __IO uint32_t TXBUF;                  /*!<   Transmit Buffer Register,                            Address offset: 0x14 */
  __IO uint32_t DMR;                    /*!<   data Matching Register,                              Address offset: 0x18 */
}LPUART_Type;
 
 
/* ================================================================================ */
/* ================                      SPI                       ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t CR1;                    /*!<  SPIx Control Register1,                               Address offset: 0x00 */
  __IO uint32_t CR2;                    /*!<  SPIx Control Register2,                               Address offset: 0x04 */
  __O  uint32_t CR3;                    /*!<  SPIx Control Register3,                               Address offset: 0x08 */
  __IO uint32_t IER;                    /*!<  SPIx Interrupt Enable Register,                       Address offset: 0x0C */
  __IO uint32_t ISR;                    /*!<  SPIx Status Register,                                 Address offset: 0x10 */
  __O  uint32_t TXBUF;                  /*!<  SPIx Transmit Buffer,                                 Address offset: 0x14 */
  __I  uint32_t RXBUF;                  /*!<  SPIx Receive Buffer,                                  Address offset: 0x18 */
}SPI_Type;
 
 
/* ================================================================================ */
/* ================                      U7816                     ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t CR;                     /*!<  U7816 Control Register,                               Address offset: 0x00 */
  __IO uint32_t FFR;                    /*!<  U7816 Frame Format Register,                          Address offset: 0x04 */
  __IO uint32_t EGTR;                   /*!<  U7816 Extra Guard Time Register,                      Address offset: 0x08 */
  __IO uint32_t PSC;                    /*!<  U7816 Prescaler Register,                             Address offset: 0x0C */
  __IO uint32_t BGR;                    /*!<  U7816 Baud rate Generator Register,                   Address offset: 0x10 */
  __I  uint32_t RXBUF;                  /*!<  U7816 Receive Buffer,                                 Address offset: 0x14 */
  __O  uint32_t TXBUF;                  /*!<  U7816 Transmit Buffer,                                Address offset: 0x18 */
  __IO uint32_t IER;                    /*!<  U7816 Interrupt Enable Register,                      Address offset: 0x1C */
  __IO uint32_t ISR;                    /*!<  U7816 Interrupt Status Register,                      Address offset: 0x20 */
}U7816_Type;
 
 
/* ================================================================================ */
/* ================                      QSPI                      ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t CR;                     /*!<  QSPI Control Register,                                Address offset: 0x00 */
  __IO uint32_t CFG;                    /*!<   Config Register,                                     Address offset: 0x04 */
  __IO uint32_t SR;                     /*!<  QSPI Status Register,                                 Address offset: 0x08 */
  __IO uint32_t DATALEN;                /*!<  QSPI Data Length Register,                            Address offset: 0x0C */
  __IO uint32_t CCR;                    /*!<  QSPI Communication Config Register,                   Address offset: 0x10 */
  __IO uint32_t ADDR;                   /*!<  QSPI Address Register,                                Address offset: 0x14 */
  __IO uint32_t ABR;                    /*!<  QSPI Alternate Bytes Register,                        Address offset: 0x18 */
  __IO uint32_t DR;                     /*!<  QSPI Data Register,                                   Address offset: 0x1C */
  __IO uint32_t SMSK;                   /*!<  QSPI Status Mask Register,                            Address offset: 0x20 */
  __IO uint32_t SMAT;                   /*!<  QSPI Status Match Register,                           Address offset: 0x24 */
  __IO uint32_t PITV;                   /*!<  QSPI Polling Interval Register,                       Address offset: 0x28 */
  __IO uint32_t TO;                     /*!<  QSPI Time Out Register,                               Address offset: 0x2C */
}QSPI_Type;
 
 
/* ================================================================================ */
/* ================                       DMA                      ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t GCR;                    /*!<   Global Control Register,                             Address offset: 0x00 */
  __IO uint32_t CH0CR;                  /*!<  Channel 0 Control Register,                           Address offset: 0x04 */
  __IO uint32_t CH0MAR;                 /*!<  Channel 0 Memory Address Register,                    Address offset: 0x08 */
  __IO uint32_t CH1CR;                  /*!<  Channel 1 Control Register,                           Address offset: 0x0C */
  __IO uint32_t CH1MAR;                 /*!<  Channel 1 Memory Address Register,                    Address offset: 0x10 */
  __IO uint32_t CH2CR;                  /*!<  Channel 2 Control Register,                           Address offset: 0x14 */
  __IO uint32_t CH2MAR;                 /*!<  Channel 2 Memory Address Register,                    Address offset: 0x18 */
  __IO uint32_t CH3CR;                  /*!<  Channel 3 Control Register,                           Address offset: 0x1C */
  __IO uint32_t CH3MAR;                 /*!<  Channel 3 Memory Address Register,                    Address offset: 0x20 */
  __IO uint32_t CH4CR;                  /*!<  Channel 4 Control Register,                           Address offset: 0x24 */
  __IO uint32_t CH4MAR;                 /*!<  Channel 4 Memory Address Register,                    Address offset: 0x28 */
  __IO uint32_t CH5CR;                  /*!<  Channel 5 Control Register,                           Address offset: 0x2C */
  __IO uint32_t CH5MAR;                 /*!<  Channel 5 Memory Address Register,                    Address offset: 0x30 */
  __IO uint32_t CH6CR;                  /*!<  Channel 6 Control Register,                           Address offset: 0x34 */
  __IO uint32_t CH6MAR;                 /*!<  Channel 6 Memory Address Register,                    Address offset: 0x38 */
  __IO uint32_t CH7CR;                  /*!<  Channel 7 Control Register,                           Address offset: 0x3C */
  __IO uint32_t CH7MAR;                 /*!<  Channel 7 Memory Address Register,                    Address offset: 0x40 */
  __IO uint32_t CH8CR;                  /*!<  Channel 8 Control Register,                           Address offset: 0x44 */
  __IO uint32_t CH8MAR;                 /*!<  Channel 8 Memory Address Register,                    Address offset: 0x48 */
  __IO uint32_t CH9CR;                  /*!<  Channel 9 Control Register,                           Address offset: 0x4C */
  __IO uint32_t CH9MAR;                 /*!<  Channel 9 Memory Address Register,                    Address offset: 0x50 */
  __IO uint32_t CH10CR;                 /*!<  Channel 10 Control Register,                          Address offset: 0x54 */
  __IO uint32_t CH10MAR;                /*!<  Channel 10 Memory Address Register,                   Address offset: 0x58 */
  __IO uint32_t CH11CR;                 /*!<  Channel 11 Control Register,                          Address offset: 0x5C */
  __IO uint32_t CH11FAR;                /*!<  Channel 11 Flash Address Register,                    Address offset: 0x60 */
  __IO uint32_t CH11RAR;                /*!<  Channel 11 RAM Address Register,                      Address offset: 0x64 */
  __IO uint32_t ISR;                    /*!<  DMA Interrupt Status Register,                        Address offset: 0x68 */
  __IO uint32_t RSV1[37];               /*!<  RESERVED REGISTER,                                    Address offset: 0x6C */
  __IO uint32_t CH0CSR;                 /*!<  Channel 0 Control Shadow Register,                    Address offset: 0x100 */
  __IO uint32_t CH0MASR;                /*!<  Channel 0 Memory Address Shadow Register,             Address offset: 0x104 */
  __IO uint32_t CH1CSR;                 /*!<  Channel 0 Control Shadow Register,                    Address offset: 0x108 */
  __IO uint32_t CH1MASR;                /*!<  Channel 0 Memory Address Shadow Register,             Address offset: 0x10C */
  __IO uint32_t CH2CSR;                 /*!<  Channel 0 Control Shadow Register,                    Address offset: 0x110 */
  __IO uint32_t CH2MASR;                /*!<  Channel 0 Memory Address Shadow Register,             Address offset: 0x114 */
  __IO uint32_t CH3CSR;                 /*!<  Channel 0 Control Shadow Register,                    Address offset: 0x118 */
  __IO uint32_t CH3MASR;                /*!<  Channel 0 Memory Address Shadow Register,             Address offset: 0x11C */
  __IO uint32_t CH4CSR;                 /*!<  Channel 0 Control Shadow Register,                    Address offset: 0x120 */
  __IO uint32_t CH4MASR;                /*!<  Channel 0 Memory Address Shadow Register,             Address offset: 0x124 */
  __IO uint32_t CH5CSR;                 /*!<  Channel 0 Control Shadow Register,                    Address offset: 0x128 */
  __IO uint32_t CH5MASR;                /*!<  Channel 0 Memory Address Shadow Register,             Address offset: 0x12C */
  __IO uint32_t CH6CSR;                 /*!<  Channel 0 Control Shadow Register,                    Address offset: 0x130 */
  __IO uint32_t CH6MASR;                /*!<  Channel 0 Memory Address Shadow Register,             Address offset: 0x134 */
}DMA_Type;
 
 
/* ================================================================================ */
/* ================                       CRC                      ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t DR;                     /*!<  CRC Data Register,                                    Address offset: 0x00 */
  __IO uint32_t CR;                     /*!<  CRC Control Register,                                 Address offset: 0x04 */
  __IO uint32_t LFSR;                    /*!<                     Address offset: 0x08 */
  __IO uint32_t XOR;                    /*!<                                Address offset: 0x0C */
  __IO uint32_t RSV1[3];
  __IO uint32_t POLY;                   /*!<  CRC Polynominal Register,                             Address offset: 0x1C */
}CRC_Type;
 
 
/* ================================================================================ */
/* ================                       BT                       ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t CR1;                    /*!<  Basic Timer 1 Control Register 1,                     Address offset: 0x00 */
  __IO uint32_t CR2;                    /*!<  Basic Timer 1 Control Register 2,                     Address offset: 0x04 */
  __IO uint32_t CFGR1;                  /*!<  Basic Timer 1 Config Register 1,                      Address offset: 0x08 */
  __IO uint32_t CFGR2;                  /*!<  Basic Timer 1 Config Register 2,                      Address offset: 0x0C */
  __IO uint32_t PRES;                   /*!<  Basic Timer 1 Prescaler Register,                     Address offset: 0x10 */
  __IO uint32_t LOADCR;                 /*!<  Basic Timer 1 Load Control Register,                  Address offset: 0x14 */
  __I  uint32_t CNTL;                   /*!<  Basic Timer 1 Counter Low,                            Address offset: 0x18 */
  __I  uint32_t CNTH;                   /*!<  Basic Timer 1 Counter High,                           Address offset: 0x1C */
  __IO uint32_t PRESET;                 /*!<  Basic Timer 1 Preset Register,                        Address offset: 0x20 */
  __IO uint32_t LOADL;                  /*!<  Basic Timer 1 Load Register Low,                      Address offset: 0x24 */
  __IO uint32_t LOADH;                  /*!<  Basic Timer 1 Load Register High,                     Address offset: 0x28 */
  __IO uint32_t CMPL ;                  /*!<  Basic Timer 1 Compare Register Low,                   Address offset: 0x2C */
  __IO uint32_t CMPH ;                  /*!<  Basic Timer 1 Compare Register High,                  Address offset: 0x30 */
  __IO uint32_t OUTCNT;                 /*!<  Basic Timer 1 Output Counter,                         Address offset: 0x34 */
  __IO uint32_t OCR;                    /*!<  Basic Timer 1 Output Control Register,                Address offset: 0x38 */
  __IO uint32_t IER;                    /*!<  Basic Timer 1 Interrupt Enable Register,              Address offset: 0x3C */
  __IO uint32_t ISR;                    /*!<  Basic Timer 1 Interrupt Status Register,              Address offset: 0x40 */
}BT_Type;
 
 
/* ================================================================================ */
/* ================                       ET                       ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t CR;                     /*!<  ETx Control Register,                                 Address offset: 0x00 */
  __IO uint32_t INSR;                   /*!<  ETx Input Select Register,                            Address offset: 0x04 */
  __IO uint32_t PSCR1;                  /*!<  ETx Prescaler Register1,                              Address offset: 0x08 */
  __IO uint32_t PSCR2;                  /*!<  ETx Prescaler Register2,                              Address offset: 0x0C */
  __IO uint32_t IVR;                    /*!<  ETx Initial Value Register,                           Address offset: 0x10 */
  __IO uint32_t CMPR;                   /*!<  ETx Compare Register,                                 Address offset: 0x14 */
  __IO uint32_t IER;                    /*!<  ETx Interrupt Enable Register,                        Address offset: 0x18 */
  __IO uint32_t ISR;                    /*!<  ETx Interrupt Status Register,                        Address offset: 0x1C */
}ET_Type;
 
/* ================================================================================ */
/* ================                      ETIM EXTEND               ================ */
/* ================================================================================ */
typedef struct
{
  __IO uint32_t CNT1;                    /*!< ETIMER COUNTER,                  Address offset: 0x00 */ 
  __IO uint32_t CNT2;                    /*!< ETIMER COUNTER,                  Address offset: 0x04 */ 
  __IO uint32_t CNT3;                    /*!< ETIMER COUNTER,                  Address offset: 0x08 */ 
  __IO uint32_t CNT4;                    /*!< ETIMER COUNTER,                  Address offset: 0x0C */ 
}ETCNT_Type;
 
/* ================================================================================ */
/* ================                      BSTIM                     ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t CR1;                    /*!<  BSTIM Control Register1,                              Address offset: 0x00 */
  __IO uint32_t CR2;                    /*!<  BSTIM Control Register2,                              Address offset: 0x04 */
  __IO uint32_t RSV1;                   /*!<  RESERVED REGISTER,                                    Address offset: 0x08 */
  __IO uint32_t IER;                    /*!<  BSTIM Interrupt Enable Register,                      Address offset: 0x0C */
  __IO uint32_t ISR;                    /*!<  BSTIM Interrupt Status Register,                      Address offset: 0x10 */
  __O  uint32_t EGR;                    /*!<  BSTIM Event Generation Register,                      Address offset: 0x14 */
  __IO uint32_t RSV2[3];                /*!<  RESERVED REGISTER,                                    Address offset: 0x18 */
  __IO uint32_t CNTR;                   /*!<  BSTIM Counter Register,                               Address offset: 0x24 */
  __IO uint32_t PSCR;                   /*!<  BSTIM Prescaler Register,                             Address offset: 0x28 */
  __IO uint32_t ARR;                    /*!<  BSTIM Auto-Reload Register,                           Address offset: 0x2C */
}BSTIM_Type;
 
 
/* ================================================================================ */
/* ================                       LPTIM                    ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t CFGR;                   /*!<   LPTIM Config Register,                                Address offset: 0x00 */
  __I  uint32_t CNTR;                   /*!<   LPTIM Counter Register,                               Address offset: 0x04 */
  __IO uint32_t CCSR;                   /*!<   LPTIM Capture/Compare Control and Status Register,    Address offset: 0x08 */
  __IO uint32_t ARR;                    /*!<   LPTIM Auto-Reload Register,                           Address offset: 0x0C */
  __IO uint32_t IER;                    /*!<   LPTIM Interrupt Enable Register,                      Address offset: 0x10 */
  __IO uint32_t ISR;                    /*!<   LPTIM Interrupt Status Register,                      Address offset: 0x14 */
  __IO uint32_t CR;                     /*!<   LPTIM Control Register,                               Address offset: 0x18 */
  __IO uint32_t RSV1;                   /*!<   LPTIM RESERVED REGISTER,                              Address offset: 0x1C */
  __IO uint32_t CCR1;                   /*!<   LPTIM Capture/Compare Register1,                      Address offset: 0x20 */
  __IO uint32_t CCR2;                   /*!<   LPTIM Capture/Compare Register2,                      Address offset: 0x24 */
  __IO uint32_t CCR3;                   /*!<   LPTIM Capture/Compare Register3,                      Address offset: 0x28 */
  __IO uint32_t CCR4;                   /*!<   LPTIM Capture/Compare Register4,                      Address offset: 0x2C */
} LPTIM_Type;
 
 
/* ================================================================================ */
/* ================                      RTC                       ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t WER;                    /*!<  RTC Write Enable Register,                          Address offset: 0x00 */
  __IO uint32_t IER;                    /*!<  RTC Interrupt Enable Register,                      Address offset: 0x04 */
  __IO uint32_t ISR;                    /*!<  RTC Interrupt Status Register,                      Address offset: 0x08 */
  __IO uint32_t BCDSEC;                 /*!<  RTC BCD time register,                              Address offset: 0x0C */
  __IO uint32_t BCDMIN;                 /*!<  RTC BCD time register,                              Address offset: 0x10 */
  __IO uint32_t BCDHOUR;                /*!<  RTC BCD time register,                              Address offset: 0x14 */
  __IO uint32_t BCDDATE;                /*!<  RTC BCD time register,                              Address offset: 0x18 */
  __IO uint32_t BCDWEEK;                /*!<  RTC BCD time register,                              Address offset: 0x1C */
  __IO uint32_t BCDMONTH;               /*!<  RTC BCD time register,                              Address offset: 0x20 */
  __IO uint32_t BCDYEAR;                /*!<  RTC BCD time register,                              Address offset: 0x24 */
  __IO uint32_t ALARM;                  /*!<  RTC Alarm Register,                                 Address offset: 0x28 */
  __IO uint32_t TMSEL;                  /*!<  RTC Time Mark Select,                               Address offset: 0x2C */
  __IO uint32_t ADJUST;                 /*!<  RTC time Adjust Register,                           Address offset: 0x30 */
  __IO uint32_t ADSIGN;                 /*!<  RTC time Adjust Sign Register,                      Address offset: 0x34 */
  __IO uint32_t VCAL;                   /*!<  RTC Virtual Calibration Register,                   Address offset: 0x38 */
  __IO uint32_t MSCNT;                  /*!<  RTC Milli-Second Register,                          Address offset: 0x3C */
  __IO uint32_t CALSTEP;                /*!<  RTC Calibration Step Register,                      Address offset: 0x40 */
  __I  uint32_t ADCNT;                  /*!<  RTC Adjust Counter Register,                        Address offset: 0x44 */
  __I  uint32_t SSR;                    /*!<  RTC Sub-Second Register,                            Address offset: 0x48 */
  __IO uint32_t SSA;                    /*!<  RTC Sub-Second Alarm Register,                      Address offset: 0x4C */
  __IO uint32_t DTR;                    /*!<  RTC Time Mark Duty Cycle Register,                  Address offset: 0x50 */
  __IO uint32_t RSV1[10];               /*!<  RESERVED REGISTER,                                  Address offset: 0x54 */
  __IO uint32_t CR;                     /*!<  RTC Control Register,                               Address offset: 0x7C */
}RTC_Type;
 
/* ================================================================================ */
/* ================                       LCD                      ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t CR;                     /*!<  LCD Control Register,                                 Address offset: 0x00 */
  __IO uint32_t TEST;                   /*!<  LCD test Register,                                    Address offset: 0x04 */
  __IO uint32_t FCR;                    /*!<  LCD Frequency Control Register,                       Address offset: 0x08 */
  __IO uint32_t FLKT;                   /*!<  LCD Flick Time Register,                              Address offset: 0x0C */
  __IO uint32_t RSV1;                   /*!<  RESERVED REGISTER,                                    Address offset: 0x10 */
  __IO uint32_t IER;                    /*!<  LCD Interrupt Enable Register,                        Address offset: 0x14 */
  __IO uint32_t ISR;                    /*!<  LCD Interrupt Status Register,                        Address offset: 0x18 */
  __IO uint32_t RSV2[2];                /*!<  RESERVED REGISTER,                                    Address offset: 0x1C */
  __IO uint32_t DATA0;                  /*!<  data buffer registers 0,                              Address offset: 0x24 */
  __IO uint32_t DATA1;                  /*!<  data buffer registers 1,                              Address offset: 0x28 */
  __IO uint32_t DATA2;                  /*!<  data buffer registers 2,                              Address offset: 0x2C */
  __IO uint32_t DATA3;                  /*!<  data buffer registers 3,                              Address offset: 0x30 */
  __IO uint32_t DATA4;                  /*!<  data buffer registers 4,                              Address offset: 0x34 */
  __IO uint32_t DATA5;                  /*!<  data buffer registers 5,                              Address offset: 0x38 */
  __IO uint32_t DATA6;                  /*!<  data buffer registers 6,                              Address offset: 0x3C */
  __IO uint32_t DATA7;                  /*!<  data buffer registers 7,                              Address offset: 0x40 */
  __IO uint32_t DATA8;                  /*!<  data buffer registers 8,                              Address offset: 0x44 */
  __IO uint32_t DATA9;                  /*!<  data buffer registers 9,                              Address offset: 0x48 */
  __IO uint32_t RSV3[1];                /*!<  RESERVED REGISTER,                                    Address offset: 0x4C */
  __IO uint32_t COMEN;                  /*!<  LCD COM Enable Register,                              Address offset: 0x50 */
  __IO uint32_t SEGEN0;                 /*!<  LCD SEG Enable Register0,                             Address offset: 0x54 */
  __IO uint32_t SEGEN1;                 /*!<  LCD SEG Enable Register1,                             Address offset: 0x58 */
  __IO uint32_t BSTCR;                  /*!<  LCD Boost Control Register,                           Address offset: 0x5C */
}LCD_Type;
 
 
/* ================================================================================ */
/* ================                       ADC                      ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t CR;                     /*!<  ADC Control Register,                                 Address offset: 0x00 */
  __IO uint32_t TRIM;                   /*!<  ADC Trim Register,                                    Address offset: 0x04 */
  __I  uint32_t DR;                     /*!<  ADC Data Register,                                    Address offset: 0x08 */
  __IO uint32_t ISR;                    /*!<  ADC Interrupt Status Regsiter,                        Address offset: 0x0C */
  __IO uint32_t CFGR;                   /*!<  ADC Config Register,                                  Address offset: 0x10 */
}ADC_Type;
 
 
/* ================================================================================ */
/* ================                        CIC                   ================ */
/* ================================================================================ */
 
typedef struct
{
  __I  uint32_t DR;                 /*!<  CIC Output Data Register,                             Address offset: 0x00 */
  __IO uint32_t OS;                 /*!<  CIC Output Offset Register,                           Address offset: 0x04 */
  __I  uint32_t USDR;               /*!<  CIC Unsigned Data Register,                           Address offset: 0x08 */
  __IO uint32_t CR;                 /*!<  CIC Control Register,                                 Address offset: 0x0C */
  __IO uint32_t ISR;                /*!<  CIC Interrupt Status Register,                        Address offset: 0x10 */
}CIC_Type;
 
 
/* ================================================================================ */
/* ================                      GPIO                      ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t INEN;                   /*!<  GPIOx Input Enable Register,                          Address offset: 0x00 */
  __IO uint32_t PUEN;                   /*!<  GPIOx Pull-Up Enable Register,                        Address offset: 0x04 */
  __IO uint32_t ODEN;                   /*!<   Open-Drain Enable Register,                          Address offset: 0x08 */
  __IO uint32_t FCR;                    /*!<   Function Control Register,                           Address offset: 0x0C */
  __IO uint32_t DO;                     /*!<   Data Output Register,                                Address offset: 0x10 */
  __O uint32_t DSET;                    /*!<   Data Set Register,                                   Address offset: 0x14 */
  __O uint32_t DRST;                    /*!<   Data Reset Register,                                 Address offset: 0x18 */
  __I uint32_t DIN;                     /*!<   Data Input Register,                                 Address offset: 0x1C */
  __IO uint32_t DFS;                    /*!<   Digital Function Select,                             Address offset: 0x20 */
  __IO uint32_t RSV;                     /*!<  RESERVED REGISTER,                          Address offset: 0x24 */
  __IO uint32_t ANEN;                   /*!<  Analog channel Enable Register,                       Address offset: 0x28 */
}GPIO_Type;
 
/* ================================================================================ */
/* ================                      GPIOH                     ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t INEN;                   /*!<  GPIOx Input Enable Register,                          Address offset: 0x00 */
  __IO uint32_t PUEN;                   /*!<  GPIOx Pull-Up Enable Register,                        Address offset: 0x04 */
  __IO uint32_t FCR;                    /*!<   Function Control Register,                           Address offset: 0x08 */
  __IO uint32_t DO;                     /*!<   Data Output Register,                                Address offset: 0x0C */
  __IO uint32_t DIN;                    /*!<   Data Input Register,                                 Address offset: 0x10 */
}GPIOH_Type;
 
/* ================================================================================ */
/* ================                      GPIO                      ================ */
/* ================================================================================ */
 
typedef struct
{
  __IO uint32_t EXTISEL0;               /*!<  External Interrupt input Select Register1,            Address offset: 0x00 */
  __IO uint32_t EXTISEL1;               /*!<  External Interrupt input Select Register0,            Address offset: 0x04 */
  __IO uint32_t EXTIEDS0;               /*!<  External Interrupt Edge Select and Enable Register1,  Address offset: 0x08 */
  __IO uint32_t EXTIEDS1;               /*!<  External Interrupt Edge Select and Enable Register0,  Address offset: 0x0C */
  __IO uint32_t EXTIDF;                 /*!<  External Interrupt Digital Filter Register,           Address offset: 0x10 */
  __IO uint32_t EXTIISR;                /*!<  External Interrupt and Status Register,               Address offset: 0x14 */
  __I uint32_t EXTIDI;                  /*!<  External Interrupt Data Input Register,               Address offset: 0x18 */
  __IO uint32_t RSV1[9];                /*!<  RESERVED REGISTER,                                    Address offset: 0x1C */
  __IO uint32_t FOUTSEL;                /*!<  Frequency Output Select Register,                     Address offset: 0x40 */
  __IO uint32_t IOMCR;                  /*!<  IO MUX Control Register,                              Address offset: 0x44 */
  __IO uint32_t RSV2[62];               /*!<  RESERVED REGISTER,                                    Address offset: 0x48 */
  __IO uint32_t PINWKEN;                /*!<  Wakeup Enable Register,                               Address offset: 0x140 */
}GPIO_COMMON_Type;
 
/* --------------------  End of section using anonymous unions  ------------------- */
#if defined(__CC_ARM)
  #pragma pop
#elif defined(__ICCARM__)
  /* leave anonymous unions enabled */
#elif defined(__GNUC__)
/* anonymous unions are enabled by default */
#elif defined(__TMS470__)
  /* anonymous unions are enabled by default */
#elif defined(__TASKING__)
  #pragma warning restore
#else
  #warning Not supported compiler type
#endif
 
 
/* ================================================================================ */
/* ================              CPU memory map                    ================ */
/* ================================================================================ */
 
 
/* Peripheral and SRAM base address */
 
#define FLASH_BASE            ((     uint32_t)0x00000000)
#define SRAM_BASE             ((     uint32_t)0x20000000)
#define PERIPH_BASE           ((     uint32_t)0x40000000)
 
 
/* ================================================================================ */
/* ================              Peripheral memory map             ================ */
/* ================================================================================ */
 
/* Peripheral memory map */
 
#define PMU_BASE                        (PERIPH_BASE        +0x00002000)
#define DBG_BASE                        (PERIPH_BASE        +0x00000000)
#define FLS_BASE                        (PERIPH_BASE        +0x00001000)
#define RMU_BASE                        (PERIPH_BASE        +0x00002800)
#define IWDT_BASE                       (PERIPH_BASE        +0x00011400)
#define WWDT_BASE                       (PERIPH_BASE        +0x00011800)
#define CMU_BASE                        (PERIPH_BASE        +0x00002400)
#define CDIF_BASE                       (PERIPH_BASE        +0x0001E000)
#define VRTC_BASE                       (PERIPH_BASE        +0x0001F800)
#define SVD_BASE                        (PERIPH_BASE        +0x00012800)
#define AES_BASE                        (PERIPH_BASE        +0x00013800)
#define PAE_BASE                        (PERIPH_BASE        +0x00001400)
#define HASH_BASE                       (PERIPH_BASE        +0x00001800)
#define RNG_BASE                        (PERIPH_BASE        +0x00013C00)
#define COMP_BASE                       (PERIPH_BASE        +0x00015400)
#define I2C0_BASE                       (PERIPH_BASE        +0x00012400)
#define I2C1_BASE                       (PERIPH_BASE        +0x00015000)
#define UARTIR_BASE                     (PERIPH_BASE        +0x00017C00)
#define UART0_BASE                      (PERIPH_BASE        +0x00012000)
#define UART1_BASE                      (PERIPH_BASE        +0x00016800)
#define UART2_BASE                      (PERIPH_BASE        +0x00016C00)
#define UART3_BASE                      (PERIPH_BASE        +0x00017000)
#define UART4_BASE                      (PERIPH_BASE        +0x00017400)
#define UART5_BASE                      (PERIPH_BASE        +0x00017800)
#define LPUART0_BASE                    (PERIPH_BASE        +0x00014000)
#define LPUART1_BASE                    (PERIPH_BASE        +0x00014400)
#define SPI0_BASE                       (PERIPH_BASE        +0x00010400)
#define SPI1_BASE                       (PERIPH_BASE        +0x00010800)
#define SPI2_BASE                       (PERIPH_BASE        +0x00014800)
#define SPI3_BASE                       (PERIPH_BASE        +0x00014C00)
#define SPI4_BASE                       (PERIPH_BASE        +0x00016400)
#define U7816_BASE                      (PERIPH_BASE        +0x00011C00)
#define QSPI_BASE                       (PERIPH_BASE        +0x00000800)
#define DMA_BASE                        (PERIPH_BASE        +0x00000400)
#define CRC_BASE                        (PERIPH_BASE        +0x00010000)
#define BT1_BASE                        (PERIPH_BASE        +0x00013000)
#define BT2_BASE                        (PERIPH_BASE        +0x00013044)
#define ET1_BASE                        (PERIPH_BASE        +0x00013090)
#define ET2_BASE                        (PERIPH_BASE        +0x000130B0)
#define ET3_BASE                        (PERIPH_BASE        +0x000130D0)
#define ET4_BASE                        (PERIPH_BASE        +0x000130F0)
#define ETCNT_BASE                        (PERIPH_BASE        +0x00013110)
#define BSTIM_BASE                      (PERIPH_BASE        +0x00016000)
#define LPTIM_BASE                      (PERIPH_BASE        +0x00013400)
#define RTC_BASE                        (PERIPH_BASE        +0x00011000)
#define LCD_BASE                        (PERIPH_BASE        +0x00010C00)
#define ADC_BASE                        (PERIPH_BASE        +0x0001FA00)
#define CIC_BASE                        (PERIPH_BASE        +0x00015C00)
#define GPIOA_BASE                      (PERIPH_BASE        +0x00000C00)
#define GPIOB_BASE                      (PERIPH_BASE        +0x00000C40)
#define GPIOC_BASE                      (PERIPH_BASE        +0x00000C80)
#define GPIOD_BASE                      (PERIPH_BASE        +0x00000CC0)
#define GPIOE_BASE                      (PERIPH_BASE        +0x00000D00)
#define GPIOF_BASE                      (PERIPH_BASE        +0x00000D40)
#define GPIOG_BASE                      (PERIPH_BASE        +0x00000D80)
#define GPIOH_BASE                      (PERIPH_BASE        +0x0001FC00)
#define GPIO_BASE                       (PERIPH_BASE        +0x00000DC0)
 
/* ================================================================================ */
/* ================             Peripheral declaration             ================ */
/* ================================================================================ */
 
#define PMU                             ((PMU_Type          *) PMU_BASE         )
#define DBG                             ((DBG_Type          *) DBG_BASE         )
#define FLS                             ((FLS_Type          *) FLS_BASE         )
#define RMU                             ((RMU_Type          *) RMU_BASE         )
#define IWDT                            ((IWDT_Type         *) IWDT_BASE        )
#define WWDT                            ((WWDT_Type         *) WWDT_BASE        )
#define CMU                             ((CMU_Type          *) CMU_BASE         )
#define CDIF                            ((CDIF_Type         *) CDIF_BASE        )
#define VRTC                            ((VRTC_Type         *) VRTC_BASE        )
#define SVD                             ((SVD_Type          *) SVD_BASE         )
#define AES                             ((AES_Type          *) AES_BASE         )
#define PAE                             ((PAE_Type          *) PAE_BASE         )
#define HASH                            ((HASH_Type         *) HASH_BASE        )
#define RNG                             ((RNG_Type          *) RNG_BASE         )
#define COMP                            ((COMP_Type         *) COMP_BASE        )
#define I2C0                            ((I2C_Type          *) I2C0_BASE        )
#define I2C1                            ((I2C_Type          *) I2C1_BASE        )
#define UARTIR                          ((UARTIR_Type       *) UARTIR_BASE      )
#define UART0                           ((UART_Type         *) UART0_BASE       )
#define UART1                           ((UART_Type         *) UART1_BASE       )
#define UART2                           ((UART_Type         *) UART2_BASE       )
#define UART3                           ((UART_Type         *) UART3_BASE       )
#define UART4                           ((UART_Type         *) UART4_BASE       )
#define UART5                           ((UART_Type         *) UART5_BASE       )
#define LPUART0                         ((LPUART_Type       *) LPUART0_BASE     )
#define LPUART1                         ((LPUART_Type       *) LPUART1_BASE     )
#define SPI0                            ((SPI_Type          *) SPI0_BASE        )
#define SPI1                            ((SPI_Type          *) SPI1_BASE        )
#define SPI2                            ((SPI_Type          *) SPI2_BASE        )
#define SPI3                            ((SPI_Type          *) SPI3_BASE        )
#define SPI4                            ((SPI_Type          *) SPI4_BASE        )
#define U7816                           ((U7816_Type        *) U7816_BASE       )
#define QSPI                            ((QSPI_Type         *) QSPI_BASE        )
#define DMA                             ((DMA_Type          *) DMA_BASE         )
#define CRC                             ((CRC_Type          *) CRC_BASE         )
#define BT1                             ((BT_Type           *) BT1_BASE         )
#define BT2                             ((BT_Type           *) BT2_BASE         )
#define ET1                             ((ET_Type           *) ET1_BASE         )
#define ET2                             ((ET_Type           *) ET2_BASE         )
#define ET3                             ((ET_Type           *) ET3_BASE         )
#define ET4                             ((ET_Type           *) ET4_BASE         )
#define ETCNT                            ((ETCNT_Type        *) ETCNT_BASE        )
#define BSTIM                           ((BSTIM_Type        *) BSTIM_BASE       )
#define LPTIM                           ((LPTIM_Type        *) LPTIM_BASE       )
#define RTC                             ((RTC_Type          *) RTC_BASE         )
#define LCD                             ((LCD_Type          *) LCD_BASE         )
#define ADC                             ((ADC_Type          *) ADC_BASE         )
#define CIC                             ((CIC_Type          *) CIC_BASE         )
#define GPIOA                           ((GPIO_Type         *) GPIOA_BASE       )
#define GPIOB                           ((GPIO_Type         *) GPIOB_BASE       )
#define GPIOC                           ((GPIO_Type         *) GPIOC_BASE       )
#define GPIOD                           ((GPIO_Type         *) GPIOD_BASE       )
#define GPIOE                           ((GPIO_Type         *) GPIOE_BASE       )
#define GPIOF                           ((GPIO_Type         *) GPIOF_BASE       )
#define GPIOG                           ((GPIO_Type         *) GPIOG_BASE       )
#define GPIOH                           ((GPIOH_Type        *) GPIOH_BASE       )
#define GPIO                            ((GPIO_COMMON_Type  *) GPIO_BASE        )
 
/* ================================================================================ */
/* ================             Peripheral include                 ================ */
/* ================================================================================ */
 
/** @} */ /* End of group Device_Peripheral_Registers */
/** @} */ /* End of group FM33A0XXEV */
/** @} */ /* End of group Keil */
 
#ifdef __cplusplus
}
#endif
 
#endif  /* FM33A0XXEV_H */