summaryrefslogtreecommitdiff
path: root/bsp/fm33lc026/libraries/FM/FM33xx/Include/fm33lc0xx.h
blob: ac0dda83ee4ba23820ba8412d7c90326bd9fc02f (plain)
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

/****************************************************************************************************//**
 * @file     FM33LC0XX.h
 *
 * @brief    CMSIS Cortex-M0 Peripheral Access Layer Header File for
 *           FM33LC0XX from Keil.
 *
 * @version  V0.0.1
 * @date     13. august 2019
 *
 * @note     Generated with SVDConv V2.87e
 *           from CMSIS SVD File 'FM33LC0XX.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 FM33LC0XX
  * @{
  */

#ifndef __FM33LC0XX_H
#define __FM33LC0XX_H

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

/**
  * @brief Configuration of the Cortex-M0 Processor and Core Peripherals
  */
#define __CM0_REV                    0x0100U /*!< Cortex-M0 Core Revision                                               */
#define __MPU_PRESENT                0U      /*!< MPU present or not                                                    */
#define __VTOR_PRESENT               1U      /*!< VTOR present or not                                                   */
#define __NVIC_PRIO_BITS             2U      /*!< Number of Bits used for Priority Levels                               */
#define __Vendor_SysTickConfig       0U      /*!< Set to 1 if different SysTick Config is used                          */


/**
 * @brief FM33LC0XX Interrupt Number Definition, according to the selected device
 *        in @ref Library_configuration_section
 */
typedef enum {
/******  Cortex-M0 Processor Exceptions Numbers ****************************************************************/
  Reset_IRQn                    = -15,     /*!<  1  Reset Vector, invoked on Power up and warm reset           */
  NMI_IRQn                      = -14,     /*!<  2  Non maskable Interrupt, cannot be stopped or preempted     */
  HardFault_IRQn                = -13,     /*!<  3  Hard Fault, all classes of Fault                           */
  SVCall_IRQn                   = -5,      /*!<  11  System Service Call via SVC instruction                   */
  PendSV_IRQn                   = -2,      /*!<  14  Pendable request for system service                       */
  SysTick_IRQn                  = -1,      /*!<  15  System Tick Timer                                         */
/******  FM33LC0XX specific Interrupt Numbers ******************************************************************/
  WWDT_IRQn                     = 0,       /*!<  0    Window WatchDog Interrupt                                */
  SVD_IRQn                      = 1,       /*!<  1    SVD Interrupt                                            */
  RTC_IRQn                      = 2,       /*!<  2    RTC Interrupt                                            */
  FLASH_IRQn                    = 3,       /*!<  3    FLASH global Interrupt                                   */
  LFDET_IRQn                    = 4,       /*!<  4    LFDET Interrupt                                          */
  ADC_IRQn                      = 5,       /*!<  5    ADC Interrupt                                            */
  IWDT_IRQn                     = 6,       /*!<  6    IWDT Interrupt                                           */
  SPI1_IRQn                     = 7,       /*!<  7    SPI1 Interrupt                                           */
  SPI2_IRQn                     = 8,       /*!<  8    SPI2 Interrupt                                           */
  LCD_IRQn                      = 9,       /*!<  9    LCD Interrupt                                            */
  UART0_IRQn                    = 10,      /*!<  10   UART0 global Interrupt                                   */
  UART1_IRQn                    = 11,      /*!<  11   UART1 global Interrupt                                   */
  UART4_IRQn                    = 12,      /*!<  12   UART4 global Interrupt                                   */
  UART5_IRQn                    = 13,      /*!<  13   UART5 global Interrupt                                   */
  HFDET_IRQn                    = 14,      /*!<  14   HFDET Interrupt                                          */
  U7816_IRQn                    = 15,      /*!<  15   U7816 Interrupt                                          */
  LPUART1_IRQn                  = 16,      /*!<  16   LPUART1 Interrupt                                        */
  I2C_IRQn                      = 17,      /*!<  17   I2C global Interrupt                                     */
  USB_IRQn                      = 18,      /*!<  18   USB Interrupt                                            */
  AES_IRQn                      = 19,      /*!<  19   AES Interrupt                                            */
  LPTIM_IRQn                    = 20,      /*!<  20   LPTIM Interrupt                                          */
  DMA_IRQn                      = 21,      /*!<  21   DMA Interrupt                                            */
  WKUP_IRQn                     = 22,      /*!<  22   WKUP Interrupt                                           */
  OPAx_IRQn                     = 23,      /*!<  23   OPAx Interrupt                                           */
  BSTIM_IRQn                    = 24,      /*!<  24   BSTIM Interrupt                                          */
  COMPx_IRQn                    = 25,      /*!<  25   COMPx Interrupt                                          */
  GPTIM0_IRQn                   = 26,      /*!<  26   GTIM0 global Interrupt                                   */
  GPTIM1_IRQn                   = 27,      /*!<  27   GTIM1 global Interrupt                                   */
  ATIM_IRQn                     = 28,      /*!<  28   ATIM global Interrupt                                    */
  VREF_IRQn                     = 29,      /*!<  29   VREF Interrupt                                           */
  GPIO_IRQn                     = 30,      /*!<  30   GPIO Interrupt                                           */
  LPUART0_IRQn                  = 31       /*!<  31   LPUART0 Interrupt                                        */
} IRQn_Type;


/** @addtogroup Configuration_of_CMSIS
  * @{
  */


/* ================================================================================ */
/* ================      Processor and Core Peripheral Section     ================ */
/* ================================================================================ */


#include "core_cm0plus.h"                            /*!< Cortex-M0 processor and core peripherals                           */
#include "system_fm33lc0xx.h"                        /*!< FM33LC0XX System                                                        */
#include <stdint.h>

/** @addtogroup Peripheral_registers_structures
  * @{
  */

/**
  * @brief Analog to Digital Converter
  */
typedef struct
{
  __IO uint32_t ISR;              /*!< ADC Interrupt and Status Register,                   Address offset: 0x00 */
  __IO uint32_t IER;              /*!< ADC Interrupt Enable Register,                       Address offset: 0x04 */
  __IO uint32_t CR;               /*!< ADC Control Register,                                Address offset: 0x08 */
  __IO uint32_t CFGR;             /*!< ADC Config Register,                                 Address offset: 0x0C */
  __IO uint32_t SMTR;             /*!< ADC Sampling Time Register,                          Address offset: 0x10 */
  __IO uint32_t CHER;             /*!< ADC Channel Enable Register,                         Address offset: 0x14 */
  __IO uint32_t DR;               /*!< ADC Data Register,                                   Address offset: 0x18 */
  __IO uint32_t SAMPT;            /*!< ADC Calibration Register,                            Address offset: 0x1C */
  __IO uint32_t HLTR;             /*!< ADC analog watchdog Threshold Register,              Address offset: 0x20 */
} ADC_Type;

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;              /*!< AES Interrupt Status Register,                       Address offset: 0x08 */
  __IO uint32_t DIR;              /*!< AES Data Input Register,                             Address offset: 0x0C */
  __IO uint32_t DOR;              /*!< AES Data Output Register,                            Address offset: 0x10 */
  __IO uint32_t KEY0;             /*!< AES Key Register 0,                                  Address offset: 0x14 */
  __IO uint32_t KEY1;             /*!< AES Key Register 1,                                  Address offset: 0x18 */
  __IO uint32_t KEY2;             /*!< AES Key Register 2,                                  Address offset: 0x1C */
  __IO uint32_t KEY3;             /*!< AES Key Register 3,                                  Address offset: 0x20 */
  __IO uint32_t KEY4;             /*!< AES Key Register 4,                                  Address offset: 0x24 */
  __IO uint32_t KEY5;             /*!< AES Key Register 5,                                  Address offset: 0x28 */
  __IO uint32_t KEY6;             /*!< AES Key Register 6,                                  Address offset: 0x2C */
  __IO 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 */
} AES_Type;

typedef struct
{
  __IO uint32_t CR1;              /*!< ATIM Control Register1,                              Address offset: 0x00 */
  __IO uint32_t CR2;              /*!< ATIM Control Register2,                              Address offset: 0x04 */
  __IO uint32_t SMCR;             /*!< ATIM Slave Mode Control Register,                    Address offset: 0x08 */
  __IO uint32_t DIER;             /*!< ATIM DMA and Interrupt Enable Register,              Address offset: 0x0C */
  __IO uint32_t ISR;              /*!< ATIM Interrupt Status Register,                      Address offset: 0x10 */
  __IO uint32_t EGR;              /*!< ATIM Event Generation Register,                      Address offset: 0x14 */
  __IO uint32_t CCMR1;            /*!< ATIM Capture/Compare Mode Register1,                 Address offset: 0x18 */
  __IO uint32_t CCMR2;            /*!< ATIM Capture/Compare Mode Register2,                 Address offset: 0x1C */
  __IO uint32_t CCER;             /*!< ATIM Capture/Compare Enable Register,                Address offset: 0x20 */
  __IO uint32_t CNT;              /*!< ATIM Counter Register,                               Address offset: 0x24 */
  __IO uint32_t PSC;              /*!< ATIM Prescaler Register,                             Address offset: 0x28 */
  __IO uint32_t ARR;              /*!< ATIM Auto-Reload Register,                           Address offset: 0x2C */
  __IO uint32_t RCR;              /*!< ATIM Repetition Counter Register,                    Address offset: 0x30 */
  __IO uint32_t CCR1;             /*!< ATIM Capture/Compare Register1,                      Address offset: 0x34 */
  __IO uint32_t CCR2;             /*!< ATIM Capture/Compare Register2,                      Address offset: 0x38 */
  __IO uint32_t CCR3;             /*!< ATIM Capture/Compare Register3,                      Address offset: 0x3C */
  __IO uint32_t CCR4;             /*!< ATIM Capture/Compare Register4,                      Address offset: 0x40 */
  __IO uint32_t BDTR;             /*!< ATIM Break and Deadtime Register,                    Address offset: 0x44 */
  __IO uint32_t DCR;              /*!< ATIM DMA Control Register,                           Address offset: 0x48 */
  __IO uint32_t DMAR;             /*!< ATIM DMA Access Register,                            Address offset: 0x4C */
  __IO uint32_t RSV0;             /*!< RESERVED REGISTER0,                                  Address offset: 0x50 */
  __IO uint32_t RSV1;             /*!< RESERVED REGISTER1,                                  Address offset: 0x54 */
  __IO uint32_t RSV2;             /*!< RESERVED REGISTER2,                                  Address offset: 0x58 */
  __IO uint32_t RSV3;             /*!< RESERVED REGISTER3,                                  Address offset: 0x5C */
  __IO uint32_t BKCR;             /*!< ATIM Break Control Register,                         Address offset: 0x60 */
} ATIM_Type;

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 RSV0;             /*!< RESERVED REGISTER0,                                  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 */
  __IO uint32_t EGR;              /*!< BSTIM Event Generation Register,                     Address offset: 0x14 */
  __IO uint32_t RSV1;             /*!< RESERVED REGISTER1,                                  Address offset: 0x18 */
  __IO uint32_t RSV2;             /*!< RESERVED REGISTER2,                                  Address offset: 0x1C */
  __IO uint32_t RSV3;             /*!< RESERVED REGISTER3,                                  Address offset: 0x20 */
  __IO uint32_t CNT;              /*!< BSTIM Counter Register,                              Address offset: 0x24 */
  __IO uint32_t PSC;              /*!< BSTIM Prescaler Register,                            Address offset: 0x28 */
  __IO uint32_t ARR;              /*!< BSTIM Auto-Reload Register,                          Address offset: 0x2C */
} BSTIM32_Type;

typedef struct
{
  __IO uint32_t CR;              /*!< ComparatorControl Register 1,                        Address offset: 0x00 */

} COMP_Type;

typedef struct
{
  __IO uint32_t ICR;             /*!< Comparator Interrupt Config Register,                Address offset: 0x08 */
  __IO uint32_t ISR;             /*!< Comparator Interrupt Status Register,                Address offset: 0x0C */
} COMP_COMMON_Type;

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;             /*!< CRC Linear Feedback Shift Register,                  Address offset: 0x08 */
  __IO uint32_t XOR;              /*!< CRC output XOR Register,                             Address offset: 0x0C */
  __IO uint32_t RSV0;             /*!< RESERVED REGISTER0,                                  Address offset: 0x10 */
  __IO uint32_t RSV1;             /*!< RESERVED REGISTER1,                                  Address offset: 0x14 */
  __IO uint32_t RSV2;             /*!< RESERVED REGISTER2,                                  Address offset: 0x18 */
  __IO uint32_t POLY;             /*!< CRC Polynominal Register,                            Address offset: 0x1C */
} CRC_Type;

typedef struct
{
  __IO uint32_t RSV;
  __IO uint32_t CR;               /*!< Debug Configuration Register */
  __IO uint32_t HDFR;             /*!< HardFault Flag Register*/

} DBG_Type;

typedef struct
{
  __IO uint32_t GCR;              /*!< DMA Global Control Register         ,                Address offset: 0x00 */
  __IO uint32_t CH0CR;            /*!< Channel 0 Control Register          ,                Address offset: 0x04 */
  __IO uint32_t CH0MAD;           /*!< Channel 0 Memory Address Register   ,                Address offset: 0x08 */
  __IO uint32_t CH1CR;            /*!< Channel 1 Control Register          ,                Address offset: 0x0C */
  __IO uint32_t CH1MAD;           /*!< Channel 1 Memory Address Register   ,                Address offset: 0x10 */
  __IO uint32_t CH2CR;            /*!< Channel 2 Control Register          ,                Address offset: 0x14 */
  __IO uint32_t CH2MAD;           /*!< Channel 2 Memory Address Register   ,                Address offset: 0x18 */
  __IO uint32_t CH3CR;            /*!< Channel 3 Control Register          ,                Address offset: 0x1C */
  __IO uint32_t CH3MAD;           /*!< Channel 3 Memory Address Register   ,                Address offset: 0x20 */
  __IO uint32_t CH4CR;            /*!< Channel 4 Control Register          ,                Address offset: 0x24 */
  __IO uint32_t CH4MAD;           /*!< Channel 4 Memory Address Register   ,                Address offset: 0x28 */
  __IO uint32_t CH5CR;            /*!< Channel 5 Control Register          ,                Address offset: 0x2C */
  __IO uint32_t CH5MAD;           /*!< Channel 5 Memory Address Register   ,                Address offset: 0x30 */
  __IO uint32_t CH6CR;            /*!< Channel 6 Control Register          ,                Address offset: 0x34 */
  __IO uint32_t CH6MAD;           /*!< Channel 6 Memory Address Register   ,                Address offset: 0x38 */
  __IO uint32_t CH7CR;            /*!< Channel 7 Control Register          ,                Address offset: 0x3C */
  __IO uint32_t CH7FLSAD;         /*!< Channel 7 Flash Address Register    ,                Address offset: 0x40 */
  __IO uint32_t CH7RAMAD;         /*!< Channel 7 RAM Address Register      ,                Address offset: 0x44 */
  __IO uint32_t ISR;              /*!< DMA Interrupt Status Register       ,                Address offset: 0x48 */
} DMA_Type;

typedef struct
{
  __IO uint32_t IER;              /*!< XTLF Oscillation Fail Detection Interrupt Enable Register, Address offset: 0x00 */
  __IO uint32_t ISR;              /*!< XTLF Oscillation Fail Detection Interrupt Status Register, Address offset: 0x04 */
}FDET_Type;


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 ACLOCK1;          /*!< Flash Application Code Lock Register 1,              Address offset: 0x0C */
  __IO uint32_t ACLOCK2;          /*!< Flash Application Code Lock Register 2,              Address offset: 0x10 */
  __IO uint32_t EPCR;             /*!< Flash Erase/Program Control Register,                Address offset: 0x14 */
  __IO 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 */
} FLASH_Type;

typedef struct
{
  __IO uint32_t INEN;             /*!< Input Enable Register          */
  __IO uint32_t PUEN;             /*!< Pull-Up Enable Register        */
  __IO uint32_t ODEN;             /*!< Open-Drain Enable Register     */
  __IO uint32_t FCR;              /*!< Function Control Register      */
  __IO uint32_t DO;               /*!< Data Output Register           */
  __O  uint32_t DSET;             /*!< Data Set Register              */
  __O  uint32_t DRST;             /*!< Data Reset Register            */
  __I uint32_t  DIN;              /*!< Data Input RegisterR           */
  __IO uint32_t DFS;              /*!< Digital Function Select        */
  __IO uint32_t RSV;              /*!< RESERVED REGISTER              */
  __IO uint32_t ANEN;             /*!< Analog channel Enable Register */
} GPIO_Type;

typedef struct
{
  __IO uint32_t EXTISEL;          /*!< External Interrupt input Select Register            */
  __IO uint32_t EXTIEDS;          /*!< External Interrupt Edge Select and Enable Register  */
  __IO uint32_t EXTIDF;           /*!< External Interrupt Digital Filter Register          */
  __IO uint32_t EXTIISR;          /*!< External Interrupt and Status Register              */
  __IO uint32_t EXTIDI;           /*!< External Interrupt Data Input Register              */
  __IO uint32_t RSV0[59];         /*!< RESERVED REGISTER                                   */
  __IO uint32_t FOUTSEL;          /*!< Frequency Output Select Register                    */
  __IO uint32_t RSV1[63];         /*!< RESERVED REGISTER                                   */
  __IO uint32_t PINWKEN;          /*!< Wakeup Enable Register                              */
} GPIO_COMMON_Type;

typedef struct
{
  __IO uint32_t CR1;              /*!< GPTIM Control Register1,                             Address offset: 0x00 */
  __IO uint32_t CR2;              /*!< GPTIM Control Register2,                             Address offset: 0x04 */
  __IO uint32_t SMCR;             /*!< GPTIM Slave Mode Control Register,                   Address offset: 0x08 */
  __IO uint32_t DIER;             /*!< GPTIM DMA and Interrupt Enable Register,             Address offset: 0x0C */
  __IO uint32_t ISR;              /*!< GPTIM Interrupt Status Register,                     Address offset: 0x10 */
  __IO uint32_t EGR;              /*!< GPTIM EVENT GENERATE REGISTER,                       Address offset: 0x14 */
  __IO uint32_t CCMR1;            /*!< GPTIM Capture/Compare Mode Register1,                Address offset: 0x18 */
  __IO uint32_t CCMR2;            /*!< GPTIM Capture/Compare Mode Register2,                Address offset: 0x1C */
  __IO uint32_t CCER;             /*!< GPTIM Capture/Compare Enable Register,               Address offset: 0x20 */
  __IO uint32_t CNT;              /*!< GPTIM Counter Register,                              Address offset: 0x24 */
  __IO uint32_t PSC;              /*!< GPTIM Prescaler Register,                            Address offset: 0x28 */
  __IO uint32_t ARR;              /*!< GPTIM Auto-Reload Register,                          Address offset: 0x2C */
  __IO uint32_t RSV0;             /*!< RESERVED REGISTER0,                                  Address offset: 0x30 */
  __IO uint32_t CCR1;             /*!< GPTIM Capture/Compare Register1,                     Address offset: 0x34 */
  __IO uint32_t CCR2;             /*!< GPTIM Capture/Compare Register2,                     Address offset: 0x38 */
  __IO uint32_t CCR3;             /*!< GPTIM Capture/Compare Register3,                     Address offset: 0x3C */
  __IO uint32_t CCR4;             /*!< GPTIM Capture/Compare Register4,                     Address offset: 0x40 */
  __IO uint32_t RSV1;             /*!< RESERVED REGISTER1,                                  Address offset: 0x44 */
  __IO uint32_t DCR;              /*!< GPTIM DMA CONTROL REGISTER,                          Address offset: 0x48 */
  __IO uint32_t DMAR;             /*!< GPTIM DMA access Register,                           Address offset: 0x4C */
  __IO uint32_t RSV2;             /*!< RESERVED REGISTER2,                                  Address offset: 0x50 */
  __IO uint32_t RSV3;             /*!< RESERVED REGISTER3,                                  Address offset: 0x54 */
  __IO uint32_t RSV4;             /*!< RESERVED REGISTER4,                                  Address offset: 0x58 */
  __IO uint32_t RSV5;             /*!< RESERVED REGISTER5,                                  Address offset: 0x5C */
  __IO uint32_t ITRSEL;           /*!< GPTIM  Internal Trigger Select Register,             Address offset: 0x60 */
} GPTIM_Type;

typedef struct
{
  __IO uint32_t END;              /*!< Dividend Register,                                   Address offset: 0x00 */
  __IO uint32_t SOR;              /*!< Divisor Regsiter,                                    Address offset: 0x04 */
  __IO uint32_t QUOT;             /*!< Quotient Register,                                   Address offset: 0x08 */
  __IO uint32_t REMD;             /*!< Reminder Register,                                   Address offset: 0x0C */
  __IO uint32_t SR;               /*!< Status Register,                                     Address offset: 0x10 */
} DIV_Type;


typedef struct
{
  __IO uint32_t MSPCFGR;          /*!< I2C Master Config Register,                          Address offset: 0x00 */
  __IO uint32_t MSPCR;            /*!< I2C Master Control Register,                         Address offset: 0x04 */
  __IO uint32_t MSPIER;           /*!< I2C Master Intterupt Enable Register,                Address offset: 0x08 */
  __IO uint32_t MSPISR;           /*!< I2C Master Interrupt Status Register,                Address offset: 0x0C */
  __IO uint32_t MSPSR;            /*!< I2C Master Status Register,                          Address offset: 0x10 */
  __IO uint32_t MSPBGR;           /*!< I2C Master Baud rate Generator Register,             Address offset: 0x14 */
  __IO uint32_t MSPBUF;           /*!< I2C Master transfer Buffer,                          Address offset: 0x18 */
  __IO uint32_t MSPTCR;           /*!< I2C Master Timing Control Register,                  Address offset: 0x1C */
  __IO uint32_t MSPTOR;           /*!< I2C Master Time-Out Register,                        Address offset: 0x20 */
  __IO uint32_t SSPCR;            /*!< I2C Slave Control Register,                          Address offset: 0x24 */
  __IO uint32_t SSPIER;           /*!< I2C Slave Interrupt Enable Register,                 Address offset: 0x28 */
  __IO uint32_t SSPISR;           /*!< I2C Slave Interrupt Status Register,                 Address offset: 0x2C */
  __IO uint32_t SSPSR;            /*!< I2C Slave Status Register,                           Address offset: 0x30 */
  __IO uint32_t SSPBUF;           /*!< I2C Slave transfer Buffer,                           Address offset: 0x34 */
  __IO uint32_t SSPADR;           /*!< I2C Slave Address Register,                          Address offset: 0x38 */
} I2C_Type;

typedef struct
{
  __IO uint32_t SERV;             /*!< IWDT Service Register,                               Address offset: 0x00 */
  __IO uint32_t CR;               /*!< IWDT Config Register,                                Address offset: 0x04 */
  __I  uint32_t CNT;              /*!< IWDT Counter Register,                               Address offset: 0x08 */
  __IO uint32_t WIN;              /*!< IWDT Window Register,                                Address offset: 0x0C */
  __IO uint32_t IER;              /*!< IWDT Status Register,                                Address offset: 0x10 */
  __IO uint32_t ISR;              /*!< IWDT Status Register,                                Address offset: 0x10 */
} IWDT_Type;

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 RSV0;             /*!< NULL,                                                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 RSV1;             /*!< NULL,                                                Address offset: 0x1C */
  __IO uint32_t RSV2;             /*!< NULL,                                                Address offset: 0x20 */
  __IO uint32_t DATA0;            /*!< LCD data buffer registers 0,                         Address offset: 0x24 */
  __IO uint32_t DATA1;            /*!< LCD data buffer registers 1,                         Address offset: 0x28 */
  __IO uint32_t DATA2;            /*!< LCD data buffer registers 2,                         Address offset: 0x2C */
  __IO uint32_t DATA3;            /*!< LCD data buffer registers 3,                         Address offset: 0x30 */
  __IO uint32_t DATA4;            /*!< LCD data buffer registers 4,                         Address offset: 0x34 */
  __IO uint32_t DATA5;            /*!< LCD data buffer registers 5,                         Address offset: 0x38 */
  __IO uint32_t DATA6;            /*!< LCD data buffer registers 6,                         Address offset: 0x3C */
  __IO uint32_t DATA7;            /*!< LCD data buffer registers 7,                         Address offset: 0x40 */
  __IO uint32_t RSV3;             /*!< NULL,                                                Address offset: 0x44 */
  __IO uint32_t RSV4;             /*!< NULL,                                                Address offset: 0x48 */
  __IO uint32_t RSV5;             /*!< NULL,                                                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 */
} LCD_Type;

typedef struct
{
  __IO uint32_t CFGR;             /*!< LPTIM Config Register,                               Address offset: 0x00 */
  __IO uint32_t CNT;              /*!< 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 RSV;              /*!< 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 */
} LPTIM32_Type;

typedef struct
{
  __IO uint32_t CSR;              /*!< LPUART Control Status Register,                      Address offset: 0x00 */
  __IO uint32_t IER;              /*!< LPUART Interrupt Enable Register,                    Address offset: 0x04 */
  __IO uint32_t ISR;              /*!< LPUART Interrupt Status Register,                    Address offset: 0x08 */
  __IO uint32_t BMR;              /*!< LPUART Baud rate Modulation Register,                Address offset: 0x0C */
  __IO uint32_t RXBUF;            /*!< LPUART Receive Buffer Register,                      Address offset: 0x10 */
  __IO uint32_t TXBUF;            /*!< LPUART Transmit Buffer Register,                     Address offset: 0x14 */
  __IO uint32_t DMR;              /*!< LPUART  data Matching Register,                      Address offset: 0x18 */
} LPUART_Type;


typedef struct
{
  __IO uint32_t CR;               /*!< OPA Control Register               */
  __IO uint32_t CALR;             /*!< OPA Calibration Register           */
  __IO uint32_t IER;              /*!< OPA Interrupt Enable Register      */
  __IO uint32_t ISR;              /*!< OPA Interrupt Status Register      */
} OPA_Type;

typedef struct
{
  __IO uint32_t CR;               /*!< Power Management Control Register  */
  __IO uint32_t WKTR;             /*!< Wakeup Time Register               */
  __IO uint32_t WKFR;             /*!< Wakeup Source Flags Register       */
  __IO uint32_t IER;              /*!< PMU Interrupt Enable Register      */
  __IO uint32_t ISR;              /*!< PMU Interrupt and Status Register  */
} PMU_Type;

typedef struct
{
  __IO uint32_t LKPCR;            /*!< Lockup reset Control Register               ,        Address offset: 0x00 */
  __IO uint32_t SOFTRST;          /*!< Software Reset Register                     ,        Address offset: 0x04 */
  __IO uint32_t RSTFR;            /*!< Reset Flag Register                         ,        Address offset: 0x08 */
  __IO uint32_t SYSCLKCR;         /*!< System Clock Control Register               ,        Address offset: 0x0C */
  __IO uint32_t RCHFCR;           /*!< RCHF Control Register                       ,        Address offset: 0x10 */
  __IO uint32_t RCHFTR;           /*!< RCHF Trim Register                          ,        Address offset: 0x14 */
  __IO uint32_t PLLCR;            /*!< PLL Control Register                        ,        Address offset: 0x18 */
  __IO uint32_t LPOSCCR;          /*!< LPOSC Control Register                      ,        Address offset: 0x1C */
  __IO uint32_t LPOSCTR;          /*!< LPOSC Trim Register                         ,        Address offset: 0x20 */
  __IO uint32_t XTLFCR;           /*!< XTLF CONFIG REGISTER                        ,        Address offset: 0x24 */
  __IO uint32_t PCLKCR1;          /*!< Peripheral bus Clock Control Register1      ,        Address offset: 0x28 */
  __IO uint32_t PCLKCR2;          /*!< Peripheral bus Clock Control Register2      ,        Address offset: 0x2C */
  __IO uint32_t PCLKCR3;          /*!< Peripheral bus Clock Control Register3      ,        Address offset: 0x30 */
  __IO uint32_t PCLKCR4;          /*!< Peripheral bus Clock Control Register4      ,        Address offset: 0x34 */
  __IO uint32_t LSCLKSEL;         /*!< LSCLK Select Register                       ,        Address offset: 0x38 */
  __IO uint32_t RSV0;             /*!< RESERVED REGISTER 1                         ,        Address offset: 0x3C */
  __IO uint32_t RSV1;             /*!< RESERVED REGISTER 2                         ,        Address offset: 0x40 */
  __IO uint32_t AHBMCR;           /*!< AHB Master Control Register                 ,        Address offset: 0x44 */
  __IO uint32_t RSV2;             /*!< RESERVED REGISTER 3                         ,        Address offset: 0x48 */
  __IO uint32_t RSV3;             /*!< RESERVED REGISTER 4                         ,        Address offset: 0x4C */
  __IO uint32_t PRSTEN;           /*!< Peripheral Reset Enable Register            ,        Address offset: 0x50 */
  __IO uint32_t AHBRSTCR;         /*!< AHB Peripherals Reset Control Register      ,        Address offset: 0x54 */
  __IO uint32_t APBRSTCR1;        /*!< APB Peripherals Reset Control Register1     ,        Address offset: 0x58 */
  __IO uint32_t APBRSTCR2;        /*!< APB Peripherals Reset Control Register2     ,        Address offset: 0x5C */
  __IO uint32_t XTHFCR;           /*!< XTHF Control Register                       ,        Address offset: 0x60 */
  __IO uint32_t RCMFCR;           /*!< RCMF Control Register                       ,        Address offset: 0x64 */
  __IO uint32_t RCMFTR;           /*!< RCHF Trim Register                          ,        Address offset: 0x68 */
  __IO uint32_t OPCCR1;           /*!< Peripheral Operation Clock Control Register1,        Address offset: 0x6C */
  __IO uint32_t OPCCR2;           /*!< Peripheral Operation Clock Control Register2,        Address offset: 0x70 */
  __IO uint32_t PHYCR;            /*!< PHY Control Register                        ,        Address offset: 0x74 */
  __IO uint32_t PHYBCKCR;         /*!< PHY BCK Control Register                    ,        Address offset: 0x78 */
} RCC_Type;


typedef struct
{
  __IO uint32_t PDRCR;            /*!< PDR Control Register  */
  __IO uint32_t BORCR;            /*!< BOR Control Register  */
} RMU_Type;

typedef struct
{
  __IO uint32_t CR;               /*!< RNG CONTROL REGISTER, */
} RNGCTL_Type;

typedef struct
{
  __IO uint32_t RSV0;             /*!< RESERVED REGISTER,                                   Address offset: 0x00 */
  __IO uint32_t DOR;              /*!< RNG OUTPUT REGISTER,                                 Address offset: 0x04 */
  __IO uint32_t RSV1;             /*!< RESERVED REGISTER,                                   Address offset: 0x08 */
  __IO uint32_t RSV2;             /*!< RESERVED REGISTER,                                   Address offset: 0x0C */
  __IO uint32_t SR;               /*!< RNG FLAG REGISTER,                                   Address offset: 0x10 */
  __IO uint32_t CRCCR;            /*!< RNG CRC CONTROL REGISTER,                            Address offset: 0x14 */
  __IO uint32_t CRCDIR;           /*!< RNG CRC INPUT REGISTER,                              Address offset: 0x18 */
  __IO uint32_t CRCSR;            /*!< RNG CRC FLAG REGISTER,                               Address offset: 0x1C */
} RNG_Type;

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 SECOND IN BCD REGISTER,                          Address offset: 0x0C */
  __IO uint32_t BCDMIN;           /*!< RTC MINITE IN BCD REGISTER,                          Address offset: 0x10 */
  __IO uint32_t BCDHOUR;          /*!< RTC HOUR IN BCD REGISTER,                            Address offset: 0x14 */
  __IO uint32_t BCDDAY;           /*!< RTC DAY IN BCD REGISTER,                             Address offset: 0x18 */
  __IO uint32_t BCDWEEK;          /*!< RTC WEEK IN BCD REGISTER,                            Address offset: 0x1C */
  __IO uint32_t BCDMONTH;         /*!< RTC MONTH IN BCD REGISTER,                           Address offset: 0x20 */
  __IO uint32_t BCDYEAR;          /*!< RTC YEAR IN BCD 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 RSV0;             /*!< NULL,                                                Address offset: 0x38 */
  __IO uint32_t SBSCNT;           /*!< RTC Sub-Second Counter,                              Address offset: 0x3C */
  __IO uint32_t RSV1[12];         /*!< NULL,                                                Address offset: 0x40 */
  __IO uint32_t BKR0;             /*!< RTC BACKUP REGISTER0,                                Address offset: 0x70 */
  __IO uint32_t BKR1;             /*!< RTC BACKUP REGISTER1,                                Address offset: 0x74 */
  __IO uint32_t BKR2;             /*!< RTC BACKUP REGISTER2,                                Address offset: 0x78 */
  __IO uint32_t BKR3;             /*!< RTC BACKUP REGISTER3,                                Address offset: 0x7C */
  __IO uint32_t BKR4;             /*!< RTC BACKUP REGISTER4,                                Address offset: 0x80 */
  __IO uint32_t BKR5;             /*!< RTC BACKUP REGISTER5,                                Address offset: 0x84 */
  __IO uint32_t BKR6;             /*!< RTC BACKUP REGISTER6,                                Address offset: 0x88 */
  __IO uint32_t BKR7;             /*!< RTC BACKUP REGISTER7,                                Address offset: 0x8C */
} RTC_Type;

typedef struct
{
  __IO uint32_t CR1;              /*!< SPI1 Control Register1         */
  __IO uint32_t CR2;              /*!< SPI1 Control Register2         */
  __IO uint32_t CR3;              /*!< SPI1 Control Register3         */
  __IO uint32_t IER;              /*!< SPI1 Interrupt Enable Register */
  __IO uint32_t ISR;              /*!< SPI1 Status Register           */
  __IO uint32_t TXBUF;            /*!< SPI1 Transmit Buffer           */
  __IO uint32_t RXBUF;            /*!< SPI1 Receive Buffer            */
} SPI_Type;


typedef struct
{
  __IO uint32_t CFGR;             /*!< SVD Config Register,                                 Address offset: 0x24 */
  __IO uint32_t CR;               /*!< SVD Control Register,                                Address offset: 0x28 */
  __IO uint32_t IER;              /*!< SVD Interrupt Enable Register,                       Address offset: 0x2C */
  __IO uint32_t ISR;              /*!< SVD Interrupt Status Register,                       Address offset: 0x30 */
  __IO uint32_t VSR;              /*!< SVD reference Voltage Select Register,               Address offset: 0x34 */
} SVD_Type;

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 */
  __IO uint32_t RXBUF;            /*!< U7816 Receive Buffer,                                Address offset: 0x14 */
  __IO 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;

typedef struct
{
  __IO uint32_t RSV0;             /*!< RESERVED REGISTER0,                                  Address offset: 0x00 */
  __IO uint32_t RSV1;             /*!< RESERVED REGISTER1,                                  Address offset: 0x04 */
  __IO uint32_t GAHBCFG;          /*!< USB AHB Global Config Register,                      Address offset: 0x08 */
  __IO uint32_t GUSBCFG;          /*!< USB Global Config Register,                          Address offset: 0x0C */
  __IO uint32_t GRSTCTL;          /*!< USB Global Reset Control Register,                   Address offset: 0x10 */
  __IO uint32_t GINTSTS;          /*!< USB Global Interrupt Status Register,                Address offset: 0x14 */
  __IO uint32_t GINTMSK;          /*!< USB Global Interrupt Mask Register,                  Address offset: 0x18 */
  __IO uint32_t GRXSTSR;          /*!< USB Receive Status Debug Read Register,              Address offset: 0x1C */
  __IO uint32_t GRXSTSP;          /*!< USB Receive Status and Pop Register,                 Address offset: 0x20 */
  __IO uint32_t GRXFSIZ;          /*!< USB Receive FIFO size Register,                      Address offset: 0x24 */
  __IO uint32_t GNPTXFSIZ;        /*!< USB Non-Periodic Transmit FIFO size Register,        Address offset: 0x28 */
  __IO uint32_t RSV2[10];         /*!< Reserved                                                                  */
  __IO uint32_t GLPMCFG;          /*!< USB Low-Power-Mode config Register,                  Address offset: 0x54 */
  __IO uint32_t RSV3[490];        /*!< Reserved                                                                  */
  __IO uint32_t DCFG;             /*!< USB Device Config Register,                          Address offset: 0x800*/
  __IO uint32_t DCTL;             /*!< USB Device Control Register,                         Address offset: 0x804*/
  __IO uint32_t DSTS;             /*!< USB Device Status Register,                          Address offset: 0x808*/
  __IO uint32_t DIEPMSK;          /*!< USB Device In Endpoint Interrupt Mask Register,      Address offset: 0x810*/
  __IO uint32_t DOEPMSK;          /*!< USB Device OUT Endpoint Interrupt Mask Registe,      Address offset: 0x814*/
  __IO uint32_t DAINT;            /*!< USB Device All Endpoint Interrupt Register,          Address offset: 0x818*/
  __IO uint32_t DAINTMSK;         /*!< USB Device All Endpoint Interrupt Mask Register,     Address offset: 0x81C*/
  __IO uint32_t RSV4[5];          /*!< Reserved                                                                  */
  __IO uint32_t DIEPEMPMSK;       /*!< USB Device IN endpoint FIFO empty interrupt Mask Register,Address offset: 0x834 */
  __IO uint32_t RSV5[50];         /*!< Reserved                                                                  */
  __IO uint32_t DIEPCTL0;         /*!< USB Device In Endpoint 0 Control Register,           Address offset: 0x900*/
  __IO uint32_t RSV6;             /*!< Reserved                                                                  */
  __IO uint32_t DIEPINT0;         /*!< USB Device In Endpoint 0 Interrupt Register,         Address offset: 0x908*/
  __IO uint32_t RSV7;             /*!< Reserved                                                                  */
  __IO uint32_t DIEPTSIZ0;        /*!< USB Device IN Endpoint 0 Transfer Size Register,     Address offset: 0x910*/
  __IO uint32_t RSV8;             /*!< Reserved                                                                  */
  __IO uint32_t DTXFSTS0;         /*!< USB Device In Endpoint 0 Tranmit FIFO Status Register,Address offset: 0x918 */
  __IO uint32_t RSV9;             /*!< Reserved                                                                  */
  __IO uint32_t DIEPCTL1;         /*!< USB Device In Endpoint 1 Control Register,           Address offset: 0x920*/
  __IO uint32_t RSV10;            /*!< Reserved                                                                  */
  __IO uint32_t DIEPINT1;         /*!< USB Device In Endpoint 1 Interrupt Register,         Address offset: 0x928*/
  __IO uint32_t RSV11;            /*!< Reserved                                                                  */
  __IO uint32_t DIEPTSIZ1;        /*!< USB Device IN Endpoint 1 Transfer Size Register,     Address offset: 0x930*/
  __IO uint32_t RSV12;            /*!< Reserved                                                                  */
  __IO uint32_t DTXFSTS1;         /*!< USB Device In Endpoint 1 Tranmit FIFO Status Register,Address offset: 0x938 */
  __IO uint32_t RSV13;            /*!< Reserved                                                                  */
  __IO uint32_t DIEPCTL2;         /*!< USB Device In Endpoint 2 Control Register,           Address offset: 0x940*/
  __IO uint32_t RSV14;            /*!< Reserved                                                                  */
  __IO uint32_t DIEPINT2;         /*!< USB Device In Endpoint 2 Interrupt Register,         Address offset: 0x948*/
  __IO uint32_t RSV15;            /*!< Reserved                                                                  */
  __IO uint32_t DIEPTSIZ2;        /*!< USB Device In Endpoint 2 Tranmit FIFO Status Register,Address offset: 0x950 */
  __IO uint32_t RSV16;            /*!< Reserved                                                                  */
  __IO uint32_t DTXFSTS2;         /*!< USB Device In Endpoint 2 Tranmit FIFO Status Register,Address offset: 0x958 */
  __IO uint32_t RSV17[105];       /*!< Reserved                                                                  */
  __IO uint32_t DOEPCTL0;         /*!< USB Device Out Endpoint 0 Control Register,          Address offset: 0xB00*/
  __IO uint32_t RSV18;            /*!< Reserved                                                                  */
  __IO uint32_t DOEPINT0;         /*!< USB Device Out Endpoint 0 Interrupt Register,        Address offset: 0xB08*/
  __IO uint32_t RSV19;            /*!< Reserved                                                                  */
  __IO uint32_t DOEPTSIZ0;        /*!< USB Device Out Endpoint 0 Transfer Size  Register,   Address offset: 0xB10*/
  __IO uint32_t RSV20;            /*!< Reserved                                                                  */
  __IO uint32_t RSV21;            /*!< Reserved                                                                  */
  __IO uint32_t RSV22;            /*!< Reserved                                                                  */
  __IO uint32_t DOEPCTL1;         /*!< USB Device Out Endpoint 1 Control Register,          Address offset: 0xB20*/
  __IO uint32_t RSV23;            /*!< Reserved                                                                  */
  __IO uint32_t DOEPINT1;         /*!< USB Device Out Endpoint 1 Interrupt Register,        Address offset: 0xB28*/
  __IO uint32_t RSV24;            /*!< Reserved                                                                  */
  __IO uint32_t DOEPTSIZ1;        /*!< USB Device Out Endpoint 1 Transfer Size  Register,   Address offset: 0xB30*/
  __IO uint32_t RSV25;            /*!< Reserved                                                                  */
  __IO uint32_t RSV26;            /*!< Reserved                                                                  */
  __IO uint32_t RSV27;            /*!< Reserved                                                                  */
  __IO uint32_t DOEPCTL2;         /*!< USB Device Out Endpoint 2 Control Register,          Address offset: 0xB40*/
  __IO uint32_t RSV28;            /*!< Reserved                                                                  */
  __IO uint32_t DOEPINT2;         /*!< USB Device Out Endpoint 2 Interrupt Register,        Address offset: 0xB48*/
  __IO uint32_t RSV29;            /*!< Reserved                                                                  */
  __IO uint32_t DOEPTSIZ2;        /*!< USB Device Out Endpoint 2 Transfer Size  Register,   Address offset: 0xB50*/
  __IO uint32_t RSV30[171];       /*!< Reserved                                                                  */
  __IO uint32_t PCGCCTL;          /*!< USB Power Control Global Control Register,           Address offset: 0xE00*/
} USB_Type;

typedef struct
{
  __IO uint32_t IRCR;             /*!< Infrared modulation Control Register */
} UART_COMMON_Type;

typedef struct
{
  __IO uint32_t CSR;              /*!< UART Control Status Register      */
  __IO uint32_t IER;              /*!< UART  Interrupt Enable Register   */
  __IO uint32_t ISR;              /*!< UART Interrupt Status Register    */
  __IO uint32_t TODR;             /*!< UART Time-Out and Delay Register  */
  __IO uint32_t RXBUF;            /*!< UART  Receive Buffer              */
  __IO uint32_t TXBUF;            /*!< UART Transmit Buffer              */
  __IO uint32_t BGR;              /*!< UART Baud rate Generator Register */
} UART_Type;


typedef struct
{
  __IO uint32_t CR;               /*!< VREF Control Register             */
  __IO uint32_t SR;               /*!< VREF Status Register              */
  __IO uint32_t IER;              /*!< VREF Interrupt Enable Register    */
  __IO uint32_t BUFCR;            /*!< VREF Interrupt Enable Register    */
} VREF_Type;

typedef struct
{
  __IO uint32_t CR;               /*!< WWDT Control Register,                               Address offset: 0x00 */
  __IO uint32_t CFGR;             /*!< WWDT Config Register,                                Address offset: 0x04 */
  __IO uint32_t CNT;              /*!< 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 */
  __IO uint32_t PSC;              /*!< WWDT Prescaler Register,                             Address offset: 0x14 */
} WWDT_Type;



/** @addtogroup Peripheral_memory_map
  * @{
  */
#define FLASH_BASE            0x00000000UL /*!< FLASH(up to 1 MB) base address in the alias region      */
#define SRAM_BASE             0x20000000UL
#define PERIPH_BASE           0x40000000UL

/* ================================================================================ */
/* ================              Peripheral memory map             ================ */
/* ================================================================================ */

/*!< Peripheral memory map */
#define DBG_BASE              (PERIPH_BASE + 0x00000000UL)
#define PMU_BASE              (PERIPH_BASE + 0x00000100UL)
#define RCC_BASE              (PERIPH_BASE + 0x00000200UL)
#define DMA_BASE              (PERIPH_BASE + 0x00000400UL)
#define GPIOA_BASE            (PERIPH_BASE + 0x00000C00UL)
#define GPIOB_BASE            (PERIPH_BASE + 0x00000C40UL)
#define GPIOC_BASE            (PERIPH_BASE + 0x00000C80UL)
#define GPIOD_BASE            (PERIPH_BASE + 0x00000CC0UL)
#define GPIO_COMMON_BASE      (PERIPH_BASE + 0x00000D00UL)
#define FLASH_R_BASE          (PERIPH_BASE + 0x00001000UL)
#define U7816_BASE            (PERIPH_BASE + 0x00010000UL)
#define LPUART0_BASE          (PERIPH_BASE + 0x00010400UL)
#define SPI2_BASE             (PERIPH_BASE + 0x00010800UL)
#define LCD_BASE              (PERIPH_BASE + 0x00010C00UL)
#define RTC_BASE              (PERIPH_BASE + 0x00011000UL)
#define IWDT_BASE             (PERIPH_BASE + 0x00011400UL)
#define WWDT_BASE             (PERIPH_BASE + 0x00011800UL)
#define UART0_BASE            (PERIPH_BASE + 0x00011C00UL)
#define UART1_BASE            (PERIPH_BASE + 0x00012000UL)
#define I2C_BASE              (PERIPH_BASE + 0x00012400UL)
#define LPTIM32_BASE          (PERIPH_BASE + 0x00013400UL)
#define GPTIM0_BASE           (PERIPH_BASE + 0x00013800UL)
#define GPTIM1_BASE           (PERIPH_BASE + 0x00013C00UL)
#define CRC_BASE              (PERIPH_BASE + 0x00018000UL)
#define LPUART1_BASE          (PERIPH_BASE + 0x00018400UL)
#define SPI1_BASE             (PERIPH_BASE + 0x00018C00UL)
#define DIVAS_BASE            (PERIPH_BASE + 0x00019000UL)
#define UART_COMMON_BASE      (PERIPH_BASE + 0x00019C00UL)
#define UART4_BASE            (PERIPH_BASE + 0x0001A000UL)
#define UART5_BASE            (PERIPH_BASE + 0x0001A400UL)
#define RMU_BASE              (PERIPH_BASE + 0x0001A800UL)
#define VREF_BASE             (PERIPH_BASE + 0x0001A80CUL)
#define SVD_BASE              (PERIPH_BASE + 0x0001A824UL)
#define FDET_BASE             (PERIPH_BASE + 0x0001A838UL)
#define OPA1_BASE             (PERIPH_BASE + 0x0001A844UL)
#define OPA2_BASE             (PERIPH_BASE + 0x0001A854UL)
#define RNGCTL_BASE           (PERIPH_BASE + 0x0001A868UL)
#define COMP1_BASE            (PERIPH_BASE + 0x0001A870UL)
#define COMP2_BASE            (PERIPH_BASE + 0x0001A874UL)
#define COMP_COMMON_BASE      (PERIPH_BASE + 0x0001A878UL)
#define ADC_BASE              (PERIPH_BASE + 0x0001AC00UL)
#define AES_BASE              (PERIPH_BASE + 0x0001B800UL)
#define RNG_BASE              (PERIPH_BASE + 0x0001BC00UL)
#define ATIM_BASE             (PERIPH_BASE + 0x0001B000UL)
#define BSTIM32_BASE          (PERIPH_BASE + 0x0001B400UL)
#define USB_BASE              (PERIPH_BASE + 0x10000000UL)
/* ================================================================================ */
/* ================             Peripheral declaration             ================ */
/* ================================================================================ */

#define DBG                   ((DBG_Type *) DBG_BASE)
#define PMU                   ((PMU_Type *) PMU_BASE)
#define VREF                  ((VREF_Type *) VREF_BASE)
#define RCC                   ((RCC_Type *) RCC_BASE)
#define RMU                   ((RMU_Type *) RMU_BASE)
#define DMA                   ((DMA_Type *) DMA_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 GPIO                  ((GPIO_COMMON_Type *) GPIO_COMMON_BASE)
#define FLASH                 ((FLASH_Type *) FLASH_R_BASE)
#define CRC                   ((CRC_Type *) CRC_BASE)
#define LPUART0               ((LPUART_Type *) LPUART0_BASE)
#define LPUART1               ((LPUART_Type *) LPUART1_BASE)
#define SPI1                  ((SPI_Type *) SPI1_BASE)
#define SPI2                  ((SPI_Type *) SPI2_BASE)
#define LCD                   ((LCD_Type *) LCD_BASE)
#define RTC                   ((RTC_Type *) RTC_BASE)
#define IWDT                  ((IWDT_Type *) IWDT_BASE)
#define WWDT                  ((WWDT_Type *) WWDT_BASE)
#define U7816                 ((U7816_Type *) U7816_BASE)
#define UART                  ((UART_COMMON_Type *) UART_COMMON_BASE)
#define UART0                 ((UART_Type *) UART0_BASE)
#define UART1                 ((UART_Type *) UART1_BASE)
#define UART4                 ((UART_Type *) UART4_BASE)
#define UART5                 ((UART_Type *) UART5_BASE)
#define I2C                   ((I2C_Type *) I2C_BASE)
#define FDET                  ((FDET_Type *) FDET_BASE)
#define SVD                   ((SVD_Type *) SVD_BASE)
#define OPA1                  ((OPA_Type *) OPA1_BASE)
#define OPA2                  ((OPA_Type *) OPA2_BASE)
#define LPTIM32               ((LPTIM32_Type *) LPTIM32_BASE)
#define AES                   ((AES_Type *) AES_BASE)
#define RNG                   ((RNG_Type *) RNG_BASE)
#define RNGCTL                ((RNGCTL_Type *) RNGCTL_BASE)
#define ATIM                  ((ATIM_Type *) ATIM_BASE)
#define GPTIM0                ((GPTIM_Type *) GPTIM0_BASE)
#define GPTIM1                ((GPTIM_Type *) GPTIM1_BASE)
#define BSTIM32               ((BSTIM32_Type *) BSTIM32_BASE)
#define ADC                   ((ADC_Type *) ADC_BASE)
#define COMP1                 ((COMP_Type *) COMP1_BASE)
#define COMP2                 ((COMP_Type *) COMP2_BASE)
#define COMP                  ((COMP_COMMON_Type*)COMP_COMMON_BASE)
#define DIV                   ((DIV_Type *) DIVAS_BASE)
#define USB                   ((USB_Type *) USB_BASE)
/* ================================================================================ */
/* ================             Peripheral include                 ================ */
/* ================================================================================ */

/** @} */ /* End of group Device_Peripheral_Registers */
/** @} */ /* End of group FM33LC0XX */
/** @} */ /* End of group Keil */

#ifdef __cplusplus
}
#endif

#endif  /* FM33LC0XX_H */