1 /**************************************************************************//**
\r
4 * @brief Peripheral Access Layer Header File
\r
7 * Copyright (C) 2017 Nuvoton Technology Corp. All rights reserved.
\r
9 ******************************************************************************/
\r
12 \mainpage Introduction
\r
15 * This user manual describes the usage of M2351 device driver
\r
19 * The Software is furnished "AS IS", without warranty as to performance or results, and
\r
20 * the entire risk as to performance or results is assumed by YOU. Nuvoton disclaims all
\r
21 * warranties, express, implied or otherwise, with regard to the Software, its use, or
\r
22 * operation, including without limitation any and all warranties of merchantability, fitness
\r
23 * for a particular purpose, and non-infringement of intellectual property rights.
\r
25 * <b>Copyright Notice</b>
\r
27 * Copyright (C) 2017 Nuvoton Technology Corp. All rights reserved.
\r
39 /******************************************************************************/
\r
40 /* Processor and Core Peripherals */
\r
41 /******************************************************************************/
\r
42 /** @addtogroup CMSIS_Device CMSIS Definitions
\r
43 Configuration of the Cortex-M23 Processor and Core Peripherals
\r
49 * ==========================================================================
\r
50 * ---------- Interrupt Number Definition -----------------------------------
\r
51 * ==========================================================================
\r
55 * @details Interrupt Number Definition. The maximum of 32 Specific Interrupts are possible.
\r
59 /****** Cortex-M0 Processor Exceptions Numbers ***************************************************/
\r
60 NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */
\r
61 HardFault_IRQn = -13, /*!< 3 Cortex-M23 Hard Fault Interrupt */
\r
62 SVCall_IRQn = -5, /*!< 11 Cortex-M23 SV Call Interrupt */
\r
63 PendSV_IRQn = -2, /*!< 14 Cortex-M23 Pend SV Interrupt */
\r
64 SysTick_IRQn = -1, /*!< 15 Cortex-M23 System Tick Interrupt */
\r
66 /****** ARMIKMCU Swift specific Interrupt Numbers ************************************************/
\r
68 BOD_IRQn = 0, /*!< Brown Out detection Interrupt */
\r
69 IRC_IRQn = 1, /*!< Internal RC Interrupt */
\r
70 PWRWU_IRQn = 2, /*!< Power Down Wake Up Interrupt */
\r
71 RAMPE_IRQn = 3, /*!< SRAM parity check failed Interrupt */
\r
72 CKFAIL_IRQn = 4, /*!< Clock failed Interrupt */
\r
73 ISP_IRQn = 5, /*!< FMC ISP Interrupt */
\r
74 RTC_IRQn = 6, /*!< Real Time Clock Interrupt */
\r
75 TAMPER_IRQn = 7, /*!< Tamper detection Interrupt */
\r
76 WDT_IRQn = 8, /*!< Watchdog Timer Interrupt */
\r
77 WWDT_IRQn = 9, /*!< Window Watchdog Timer Interrupt */
\r
78 EINT0_IRQn = 10, /*!< External Input 0 Interrupt */
\r
79 EINT1_IRQn = 11, /*!< External Input 1 Interrupt */
\r
80 EINT2_IRQn = 12, /*!< External Input 2 Interrupt */
\r
81 EINT3_IRQn = 13, /*!< External Input 3 Interrupt */
\r
82 EINT4_IRQn = 14, /*!< External Input 4 Interrupt */
\r
83 EINT5_IRQn = 15, /*!< External Input 5 Interrupt */
\r
84 GPA_IRQn = 16, /*!< GPIO Port A Interrupt */
\r
85 GPB_IRQn = 17, /*!< GPIO Port B Interrupt */
\r
86 GPC_IRQn = 18, /*!< GPIO Port C Interrupt */
\r
87 GPD_IRQn = 19, /*!< GPIO Port D Interrupt */
\r
88 GPE_IRQn = 20, /*!< GPIO Port E Interrupt */
\r
89 GPF_IRQn = 21, /*!< GPIO Port F Interrupt */
\r
90 QSPI0_IRQn = 22, /*!< QSPI0 Interrupt */
\r
91 SPI0_IRQn = 23, /*!< SPI0 Interrupt */
\r
92 BRAKE0_IRQn = 24, /*!< BRAKE0 Interrupt */
\r
93 EPWM0_P0_IRQn = 25, /*!< EPWM0P0 Interrupt */
\r
94 EPWM0_P1_IRQn = 26, /*!< EPWM0P1 Interrupt */
\r
95 EPWM0_P2_IRQn = 27, /*!< EPWM0P2 Interrupt */
\r
96 BRAKE1_IRQn = 28, /*!< BRAKE1 Interrupt */
\r
97 EPWM1_P0_IRQn = 29, /*!< EPWM1P0 Interrupt */
\r
98 EPWM1_P1_IRQn = 30, /*!< EPWM1P1 Interrupt */
\r
99 EPWM1_P2_IRQn = 31, /*!< EPWM1P2 Interrupt */
\r
100 TMR0_IRQn = 32, /*!< Timer 0 Interrupt */
\r
101 TMR1_IRQn = 33, /*!< Timer 1 Interrupt */
\r
102 TMR2_IRQn = 34, /*!< Timer 2 Interrupt */
\r
103 TMR3_IRQn = 35, /*!< Timer 3 Interrupt */
\r
104 UART0_IRQn = 36, /*!< UART 0 Interrupt */
\r
105 UART1_IRQn = 37, /*!< UART 1 Interrupt */
\r
106 I2C0_IRQn = 38, /*!< I2C 0 Interrupt */
\r
107 I2C1_IRQn = 39, /*!< I2C 1 Interrupt */
\r
108 PDMA0_IRQn = 40, /*!< Peripheral DMA 0 Interrupt */
\r
109 DAC_IRQn = 41, /*!< DAC Interrupt */
\r
110 EADC0_IRQn = 42, /*!< EADC Source 0 Interrupt */
\r
111 EADC1_IRQn = 43, /*!< EADC Source 1 Interrupt */
\r
112 ACMP01_IRQn = 44, /*!< Analog Comparator 0 and 1 Interrupt */
\r
113 EADC2_IRQn = 46, /*!< EADC Source 2 Interrupt */
\r
114 EADC3_IRQn = 47, /*!< EADC Source 3 Interrupt */
\r
115 UART2_IRQn = 48, /*!< UART2 Interrupt */
\r
116 UART3_IRQn = 49, /*!< UART3 Interrupt */
\r
117 SPI1_IRQn = 51, /*!< SPI1 Interrupt */
\r
118 SPI2_IRQn = 52, /*!< SPI2 Interrupt */
\r
119 USBD_IRQn = 53, /*!< USB device Interrupt */
\r
120 USBH_IRQn = 54, /*!< USB host Interrupt */
\r
121 USBOTG_IRQn = 55, /*!< USB OTG Interrupt */
\r
122 CAN0_IRQn = 56, /*!< CAN0 Interrupt */
\r
123 SC0_IRQn = 58, /*!< Smart Card 0 Interrupt */
\r
124 SC1_IRQn = 59, /*!< Smart Card 1 Interrupt */
\r
125 SC2_IRQn = 60, /*!< Smart Card 2 Interrupt */
\r
126 SPI3_IRQn = 62, /*!< SPI3 Interrupt */
\r
127 SDH0_IRQn = 64, /*!< SDH0 Interrupt */
\r
128 I2S0_IRQn = 68, /*!< I2S0 Interrupt */
\r
129 CRPT_IRQn = 71, /*!< CRPT Interrupt */
\r
130 GPG_IRQn = 72, /*!< GPIO Port G Interrupt */
\r
131 EINT6_IRQn = 73, /*!< External Input 6 Interrupt */
\r
132 UART4_IRQn = 74, /*!< UART4 Interrupt */
\r
133 UART5_IRQn = 75, /*!< UART5 Interrupt */
\r
134 USCI0_IRQn = 76, /*!< USCI0 Interrupt */
\r
135 USCI1_IRQn = 77, /*!< USCI1 Interrupt */
\r
136 BPWM0_IRQn = 78, /*!< BPWM0 Interrupt */
\r
137 BPWM1_IRQn = 79, /*!< BPWM1 Interrupt */
\r
138 I2C2_IRQn = 82, /*!< I2C2 Interrupt */
\r
139 QEI0_IRQn = 84, /*!< QEI0 Interrupt */
\r
140 QEI1_IRQn = 85, /*!< QEI1 Interrupt */
\r
141 ECAP0_IRQn = 86, /*!< ECAP0 Interrupt */
\r
142 ECAP1_IRQn = 87, /*!< ECAP1 Interrupt */
\r
143 GPH_IRQn = 88, /*!< GPIO Port H Interrupt */
\r
144 EINT7_IRQn = 89, /*!< External Input 7 Interrupt */
\r
145 PDMA1_IRQn = 98, /*!< Peripheral DMA 1 Interrupt */
\r
146 SCU_IRQn = 99, /*!< SCU Interrupt */
\r
147 TRNG_IRQn = 101 /*!< TRNG interrupt */
\r
153 /* ================================================================================ */
\r
154 /* ================ Processor and Core Peripheral Section ================ */
\r
155 /* ================================================================================ */
\r
157 /* ------- Start of section using anonymous unions and disabling warnings ------- */
\r
158 #if defined (__CC_ARM)
\r
160 #pragma anon_unions
\r
161 #elif defined (__ICCARM__)
\r
162 #pragma language=extended
\r
163 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
\r
164 #pragma clang diagnostic push
\r
165 #pragma clang diagnostic ignored "-Wc11-extensions"
\r
166 #pragma clang diagnostic ignored "-Wreserved-id-macro"
\r
167 #elif defined (__GNUC__)
\r
168 /* anonymous unions are enabled by default */
\r
169 #elif defined (__TMS470__)
\r
170 /* anonymous unions are enabled by default */
\r
171 #elif defined (__TASKING__)
\r
172 #pragma warning 586
\r
173 #elif defined (__CSMC__)
\r
174 /* anonymous unions are enabled by default */
\r
176 #warning Not supported compiler type
\r
180 /* -------- Configuration of the Cortex-ARMv8MBL Processor and Core Peripherals ------- */
\r
181 #define __ARMv8MBL_REV 0x0000U /* Core revision r0p0 */
\r
182 #define __SAU_PRESENT 1U /* SAU present */
\r
183 #define __SAUREGION_PRESENT 1U /* SAU present */
\r
184 #define __MPU_PRESENT 1U /* MPU present */
\r
185 #define __VTOR_PRESENT 1U /* VTOR present */
\r
186 #define __NVIC_PRIO_BITS 2U /* Number of Bits used for Priority Levels */
\r
187 #define __Vendor_SysTickConfig 0U /* Set to 1 if different SysTick Config is used */
\r
188 #define USE_ASSERT 0U /* Define to use Assert function or not */
\r
190 /*@}*/ /* end of group CMSIS */
\r
193 #include "core_armv8mbl.h" /* Processor and core peripherals */
\r
194 #include "system_M2351.h" /* System Header */
\r
197 * Initialize the system clock
\r
202 * @brief Setup the micro controller system
\r
203 * Initialize the PLL and update the SystemFrequency variable
\r
205 extern void SystemInit(void);
\r
208 /******************************************************************************/
\r
209 /* Device Specific Peripheral registers structures */
\r
210 /******************************************************************************/
\r
213 #include "acmp_reg.h"
\r
214 #include "bpwm_reg.h"
\r
215 #include "can_reg.h"
\r
216 #include "clk_reg.h"
\r
217 #include "crc_reg.h"
\r
218 #include "dac_reg.h"
\r
219 #include "eadc_reg.h"
\r
220 #include "ebi_reg.h"
\r
221 #include "ecap_reg.h"
\r
222 #include "fmc_reg.h"
\r
223 #include "gpio_reg.h"
\r
224 #include "hdiv_reg.h"
\r
225 #include "i2c_reg.h"
\r
226 #include "i2s_reg.h"
\r
227 #include "pdma_reg.h"
\r
228 #include "epwm_reg.h"
\r
229 #include "qei_reg.h"
\r
230 #include "rtc_reg.h"
\r
231 #include "sc_reg.h"
\r
232 #include "scu_reg.h"
\r
233 #include "sdh_reg.h"
\r
234 #include "qspi_reg.h"
\r
235 #include "spi_reg.h"
\r
236 #include "sys_reg.h"
\r
237 #include "timer_reg.h"
\r
238 #include "trng_reg.h"
\r
239 #include "uart_reg.h"
\r
240 #include "ui2c_reg.h"
\r
241 #include "usbh_reg.h"
\r
242 #include "usbd_reg.h"
\r
243 #include "otg_reg.h"
\r
244 #include "crpt_reg.h"
\r
245 #include "uspi_reg.h"
\r
246 #include "uuart_reg.h"
\r
247 #include "wdt_reg.h"
\r
248 #include "wwdt_reg.h"
\r
251 /******************************************************************************/
\r
252 /* Peripheral memory map */
\r
253 /******************************************************************************/
\r
254 /** @addtogroup PERIPHERAL_BASE Peripheral Memory Base
\r
255 Memory Mapped Structure for Series Peripheral
\r
260 /* Peripheral and SRAM base address */
\r
261 #define SRAM_BASE (0x20000000UL) /*!< (SRAM ) Base Address */
\r
262 #define PERIPH_BASE (0x40000000UL) /*!< (Peripheral) Base Address */
\r
263 #define NS_OFFSET (0x10000000UL)
\r
265 /* Peripheral memory map */
\r
266 #define AHBPERIPH_BASE PERIPH_BASE
\r
267 #define APBPERIPH_BASE (PERIPH_BASE + 0x00040000UL)
\r
269 /*!< AHB peripherals */
\r
270 #define SYS_BASE (AHBPERIPH_BASE + 0x00000UL)
\r
271 #define CLK_BASE (AHBPERIPH_BASE + 0x00200UL)
\r
272 #define INT_BASE (AHBPERIPH_BASE + 0x00300UL)
\r
273 #define GPIO_BASE (AHBPERIPH_BASE + 0x04000UL)
\r
274 #define GPIOA_BASE (AHBPERIPH_BASE + 0x04000UL)
\r
275 #define GPIOB_BASE (AHBPERIPH_BASE + 0x04040UL)
\r
276 #define GPIOC_BASE (AHBPERIPH_BASE + 0x04080UL)
\r
277 #define GPIOD_BASE (AHBPERIPH_BASE + 0x040C0UL)
\r
278 #define GPIOE_BASE (AHBPERIPH_BASE + 0x04100UL)
\r
279 #define GPIOF_BASE (AHBPERIPH_BASE + 0x04140UL)
\r
280 #define GPIOG_BASE (AHBPERIPH_BASE + 0x04180UL)
\r
281 #define GPIOH_BASE (AHBPERIPH_BASE + 0x041C0UL)
\r
282 #define GPIO_DBCTL_BASE (AHBPERIPH_BASE + 0x04440UL)
\r
283 #define GPIO_PIN_DATA_BASE (AHBPERIPH_BASE + 0x04800UL)
\r
284 #define PDMA0_BASE (AHBPERIPH_BASE + 0x08000UL)
\r
285 #define PDMA1_BASE (AHBPERIPH_BASE + 0x18000UL)
\r
286 #define USBH_BASE (AHBPERIPH_BASE + 0x09000UL)
\r
287 #define FMC_BASE (AHBPERIPH_BASE + 0x0C000UL)
\r
288 #define SDH0_BASE (AHBPERIPH_BASE + 0x0D000UL)
\r
289 #define SDH1_BASE (AHBPERIPH_BASE + 0x0E000UL)
\r
290 #define EBI_BASE (AHBPERIPH_BASE + 0x10000UL)
\r
291 #define CRC_BASE (AHBPERIPH_BASE + 0x31000UL)
\r
292 #define CRPT_BASE (AHBPERIPH_BASE + 0x32000UL)
\r
293 #define SCU_BASE (AHBPERIPH_BASE + 0x2F000UL)
\r
295 /*!< APB peripherals */
\r
296 #define WDT_BASE (APBPERIPH_BASE + 0x00000UL)
\r
297 #define WWDT_BASE (APBPERIPH_BASE + 0x00100UL)
\r
298 #define RTC_BASE (APBPERIPH_BASE + 0x01000UL)
\r
299 #define EADC_BASE (APBPERIPH_BASE + 0x03000UL)
\r
300 #define ACMP01_BASE (APBPERIPH_BASE + 0x05000UL)
\r
301 #define DAC0_BASE (APBPERIPH_BASE + 0x07000UL)
\r
302 #define DAC1_BASE (APBPERIPH_BASE + 0x07040UL)
\r
303 #define I2S0_BASE (APBPERIPH_BASE + 0x08000UL)
\r
304 #define OTG_BASE (APBPERIPH_BASE + 0x0D000UL)
\r
305 #define TMR01_BASE (APBPERIPH_BASE + 0x10000UL)
\r
306 #define TMR23_BASE (APBPERIPH_BASE + 0x11000UL)
\r
307 #define EPWM0_BASE (APBPERIPH_BASE + 0x18000UL)
\r
308 #define EPWM1_BASE (APBPERIPH_BASE + 0x19000UL)
\r
309 #define BPWM0_BASE (APBPERIPH_BASE + 0x1A000UL)
\r
310 #define BPWM1_BASE (APBPERIPH_BASE + 0x1B000UL)
\r
311 #define QSPI0_BASE (APBPERIPH_BASE + 0x20000UL)
\r
312 #define SPI0_BASE (APBPERIPH_BASE + 0x21000UL)
\r
313 #define SPI1_BASE (APBPERIPH_BASE + 0x22000UL)
\r
314 #define SPI2_BASE (APBPERIPH_BASE + 0x23000UL)
\r
315 #define SPI3_BASE (APBPERIPH_BASE + 0x24000UL)
\r
316 #define UART0_BASE (APBPERIPH_BASE + 0x30000UL)
\r
317 #define UART0_BASE (APBPERIPH_BASE + 0x30000UL)
\r
318 #define UART1_BASE (APBPERIPH_BASE + 0x31000UL)
\r
319 #define UART2_BASE (APBPERIPH_BASE + 0x32000UL)
\r
320 #define UART3_BASE (APBPERIPH_BASE + 0x33000UL)
\r
321 #define UART4_BASE (APBPERIPH_BASE + 0x34000UL)
\r
322 #define UART5_BASE (APBPERIPH_BASE + 0x35000UL)
\r
323 #define I2C0_BASE (APBPERIPH_BASE + 0x40000UL)
\r
324 #define I2C1_BASE (APBPERIPH_BASE + 0x41000UL)
\r
325 #define I2C2_BASE (APBPERIPH_BASE + 0x42000UL)
\r
326 #define SC0_BASE (APBPERIPH_BASE + 0x50000UL)
\r
327 #define SC1_BASE (APBPERIPH_BASE + 0x51000UL)
\r
328 #define SC2_BASE (APBPERIPH_BASE + 0x52000UL)
\r
329 #define CAN0_BASE (APBPERIPH_BASE + 0x60000UL)
\r
330 #define QEI0_BASE (APBPERIPH_BASE + 0x70000UL)
\r
331 #define QEI1_BASE (APBPERIPH_BASE + 0x71000UL)
\r
332 #define ECAP0_BASE (APBPERIPH_BASE + 0x74000UL)
\r
333 #define ECAP1_BASE (APBPERIPH_BASE + 0x75000UL)
\r
334 #define TRNG_BASE (APBPERIPH_BASE + 0x79000UL)
\r
335 #define USBD_BASE (APBPERIPH_BASE + 0x80000UL)
\r
336 #define USCI0_BASE (APBPERIPH_BASE + 0x90000UL)
\r
337 #define USCI1_BASE (APBPERIPH_BASE + 0x91000UL)
\r
340 /**@}*/ /* PERIPHERAL */
\r
342 /******************************************************************************/
\r
343 /* Peripheral declaration */
\r
344 /******************************************************************************/
\r
346 /** @addtogroup PMODULE Peripheral Pointer
\r
347 The Declaration of Peripheral Pointer
\r
351 /** @addtogroup PMODULE_S Secure Peripheral Pointer
\r
352 The Declaration of Secure Peripheral Pointer
\r
357 #define PA ((GPIO_T *) GPIOA_BASE) /*!< GPIO PORTA Pointer */
\r
358 #define PB ((GPIO_T *) GPIOB_BASE) /*!< GPIO PORTB Pointer */
\r
359 #define PC ((GPIO_T *) GPIOC_BASE) /*!< GPIO PORTC Pointer */
\r
360 #define PD ((GPIO_T *) GPIOD_BASE) /*!< GPIO PORTD Pointer */
\r
361 #define PE ((GPIO_T *) GPIOE_BASE) /*!< GPIO PORTE Pointer */
\r
362 #define PF ((GPIO_T *) GPIOF_BASE) /*!< GPIO PORTF Pointer */
\r
363 #define PG ((GPIO_T *) GPIOG_BASE) /*!< GPIO PORTG Pointer */
\r
364 #define PH ((GPIO_T *) GPIOH_BASE) /*!< GPIO PORTH Pointer */
\r
366 #define UART0 ((UART_T *) UART0_BASE) /*!< UART0 Pointer */
\r
367 #define UART1 ((UART_T *) UART1_BASE) /*!< UART1 Pointer */
\r
368 #define UART2 ((UART_T *) UART2_BASE) /*!< UART2 Pointer */
\r
369 #define UART3 ((UART_T *) UART3_BASE) /*!< UART3 Pointer */
\r
370 #define UART4 ((UART_T *) UART4_BASE) /*!< UART4 Pointer */
\r
371 #define UART5 ((UART_T *) UART5_BASE) /*!< UART5 Pointer */
\r
374 #define TIMER0 ((TIMER_T *) TMR01_BASE) /*!< TIMER0 Pointer */
\r
375 #define TIMER1 ((TIMER_T *) (TMR01_BASE + 0x100UL)) /*!< TIMER1 Pointer */
\r
376 #define TIMER2 ((TIMER_T *) TMR23_BASE) /*!< TIMER2 Pointer */
\r
377 #define TIMER3 ((TIMER_T *) (TMR23_BASE + 0x100UL)) /*!< TIMER3 Pointer */
\r
379 #define WDT ((WDT_T *) WDT_BASE) /*!< Watch Dog Timer Pointer */
\r
381 #define WWDT ((WWDT_T *) WWDT_BASE) /*!< Window Watch Dog Timer Pointer */
\r
383 #define QSPI0 ((QSPI_T *) QSPI0_BASE) /*!< QSPI0 Pointer */
\r
384 #define SPI0 ((SPI_T *) SPI0_BASE) /*!< SPI0 Pointer */
\r
385 #define SPI1 ((SPI_T *) SPI1_BASE) /*!< SPI1 Pointer */
\r
386 #define SPI2 ((SPI_T *) SPI2_BASE) /*!< SPI2 Pointer */
\r
387 #define SPI3 ((SPI_T *) SPI3_BASE) /*!< SPI3 Pointer */
\r
389 #define I2S0 ((I2S_T *) I2S0_BASE) /*!< I2S0 Pointer */
\r
391 #define I2C0 ((I2C_T *) I2C0_BASE) /*!< I2C0 Pointer */
\r
392 #define I2C1 ((I2C_T *) I2C1_BASE) /*!< I2C1 Pointer */
\r
393 #define I2C2 ((I2C_T *) I2C2_BASE) /*!< I2C1 Pointer */
\r
395 #define QEI0 ((QEI_T *) QEI0_BASE) /*!< QEI0 Pointer */
\r
396 #define QEI1 ((QEI_T *) QEI1_BASE) /*!< QEI1 Pointer */
\r
398 #define RTC ((RTC_T *) RTC_BASE) /*!< RTC Pointer */
\r
400 #define ACMP01 ((ACMP_T *) ACMP01_BASE) /*!< ACMP01 Pointer */
\r
402 #define CLK ((CLK_T *) CLK_BASE) /*!< System Clock Controller Pointer */
\r
404 #define DAC0 ((DAC_T *) DAC0_BASE) /*!< DAC0 Pointer */
\r
405 #define DAC1 ((DAC_T *) DAC1_BASE) /*!< DAC1 Pointer */
\r
407 #define EADC ((EADC_T *) EADC_BASE) /*!< EADC Pointer */
\r
409 #define SYS ((SYS_T *) SYS_BASE) /*!< System Global Controller Pointer */
\r
411 #define SYSINT ((SYS_INT_T *) INT_BASE) /*!< Interrupt Source Controller Pointer */
\r
413 #define FMC ((FMC_T *) FMC_BASE) /*!< Flash Memory Controller */
\r
415 #define SDH0 ((SDH_T *) SDH0_BASE)
\r
417 #define CRPT ((CRPT_T *) CRPT_BASE) /*!< Crypto Accelerator Pointer */
\r
418 #define TRNG ((TRNG_T *)TRNG_BASE) /*!< True Random Number Pointer */
\r
420 #define BPWM0 ((BPWM_T *) BPWM0_BASE) /*!< BPWM0 Pointer */
\r
421 #define BPWM1 ((BPWM_T *) BPWM1_BASE) /*!< BPWM1 Pointer */
\r
423 #define EPWM0 ((EPWM_T *) EPWM0_BASE) /*!< EPWM0 Pointer */
\r
424 #define EPWM1 ((EPWM_T *) EPWM1_BASE) /*!< EPWM1 Pointer */
\r
426 #define SC0 ((SC_T *) SC0_BASE) /*!< SC0 Pointer */
\r
427 #define SC1 ((SC_T *) SC1_BASE) /*!< SC1 Pointer */
\r
428 #define SC2 ((SC_T *) SC2_BASE) /*!< SC2 Pointer */
\r
430 #define EBI ((EBI_T *) EBI_BASE) /*!< EBI Pointer */
\r
432 #define CRC ((CRC_T *) CRC_BASE) /*!< CRC Pointer */
\r
434 #define USBD ((USBD_T *) USBD_BASE) /*!< USB Device Pointer */
\r
435 #define USBH ((USBH_T *) USBH_BASE) /*!< USBH Pointer */
\r
436 #define OTG ((OTG_T *) OTG_BASE) /*!< OTG Pointer */
\r
438 #define PDMA0 ((PDMA_T *) PDMA0_BASE) /*!< PDMA0 Pointer */
\r
439 #define PDMA1 ((PDMA_T *) PDMA1_BASE) /*!< PDMA1 Pointer */
\r
441 #define UI2C0 ((UI2C_T *) USCI0_BASE) /*!< UI2C0 Pointer */
\r
442 #define UI2C1 ((UI2C_T *) USCI1_BASE) /*!< UI2C1 Pointer */
\r
443 #define UI2C2 ((UI2C_T *) USCI2_BASE) /*!< UI2C2 Pointer */
\r
445 #define USPI0 ((USPI_T *) USCI0_BASE) /*!< USPI0 Pointer */
\r
446 #define USPI1 ((USPI_T *) USCI1_BASE) /*!< USPI1 Pointer */
\r
448 #define UUART0 ((UUART_T *) USCI0_BASE) /*!< UUART0 Pointer */
\r
449 #define UUART1 ((UUART_T *) USCI1_BASE) /*!< UUART1 Pointer */
\r
451 #define SCU ((SCU_T *) SCU_BASE) /*!< SCU Pointer */
\r
452 #define ECAP0 ((ECAP_T *) ECAP0_BASE) /*!< ECAP0 Pointer */
\r
453 #define ECAP1 ((ECAP_T *) ECAP1_BASE) /*!< ECAP1 Pointer */
\r
455 #define CAN0 ((CAN_T *)CAN0_BASE) /*!< CAN0 Pointer */
\r
460 /**@}*/ /* end of group PMODULE_S */
\r
462 /** @addtogroup PMODULE_NS Non-secure Peripheral Pointer
\r
463 The Declaration of Non-secure Peripheral Pointer
\r
468 #define PA_NS ((GPIO_T *) (GPIOA_BASE+NS_OFFSET)) /*!< GPIO PORTA Pointer */
\r
469 #define PB_NS ((GPIO_T *) (GPIOB_BASE+NS_OFFSET)) /*!< GPIO PORTB Pointer */
\r
470 #define PC_NS ((GPIO_T *) (GPIOC_BASE+NS_OFFSET)) /*!< GPIO PORTC Pointer */
\r
471 #define PD_NS ((GPIO_T *) (GPIOD_BASE+NS_OFFSET)) /*!< GPIO PORTD Pointer */
\r
472 #define PE_NS ((GPIO_T *) (GPIOE_BASE+NS_OFFSET)) /*!< GPIO PORTE Pointer */
\r
473 #define PF_NS ((GPIO_T *) (GPIOF_BASE+NS_OFFSET)) /*!< GPIO PORTF Pointer */
\r
474 #define PG_NS ((GPIO_T *) (GPIOG_BASE+NS_OFFSET)) /*!< GPIO PORTG Pointer */
\r
475 #define PH_NS ((GPIO_T *) (GPIOH_BASE+NS_OFFSET)) /*!< GPIO PORTH Pointer */
\r
476 #define UART0_NS ((UART_T *) (UART0_BASE+NS_OFFSET)) /*!< UART0 Pointer */
\r
477 #define UART1_NS ((UART_T *) (UART1_BASE+NS_OFFSET)) /*!< UART1 Pointer */
\r
478 #define UART2_NS ((UART_T *) (UART2_BASE+NS_OFFSET)) /*!< UART2 Pointer */
\r
479 #define UART3_NS ((UART_T *) (UART3_BASE+NS_OFFSET)) /*!< UART3 Pointer */
\r
480 #define UART4_NS ((UART_T *) (UART4_BASE+NS_OFFSET)) /*!< UART4 Pointer */
\r
481 #define UART5_NS ((UART_T *) (UART5_BASE+NS_OFFSET)) /*!< UART5 Pointer */
\r
482 #define TIMER2_NS ((TIMER_T *) (TMR23_BASE+NS_OFFSET)) /*!< TIMER2 Pointer */
\r
483 #define TIMER3_NS ((TIMER_T *) (TMR23_BASE+NS_OFFSET+0x100UL)) /*!< TIMER3 Pointer */
\r
484 #define QSPI0_NS ((QSPI_T *) (QSPI0_BASE+NS_OFFSET)) /*!< QSPI0 Pointer */
\r
485 #define SPI0_NS ((SPI_T *) (SPI0_BASE+NS_OFFSET)) /*!< SPI0 Pointer */
\r
486 #define SPI1_NS ((SPI_T *) (SPI1_BASE+NS_OFFSET)) /*!< SPI1 Pointer */
\r
487 #define SPI2_NS ((SPI_T *) (SPI2_BASE+NS_OFFSET)) /*!< SPI2 Pointer */
\r
488 #define SPI3_NS ((SPI_T *) (SPI3_BASE+NS_OFFSET)) /*!< SPI3 Pointer */
\r
489 #define I2S0_NS ((I2S_T *) (I2S0_BASE+NS_OFFSET)) /*!< I2S0 Pointer */
\r
490 #define I2C0_NS ((I2C_T *) (I2C0_BASE+NS_OFFSET)) /*!< I2C0 Pointer */
\r
491 #define I2C1_NS ((I2C_T *) (I2C1_BASE+NS_OFFSET)) /*!< I2C1 Pointer */
\r
492 #define I2C2_NS ((I2C_T *) (I2C2_BASE+NS_OFFSET)) /*!< I2C1 Pointer */
\r
493 #define QEI0_NS ((QEI_T *) (QEI0_BASE+NS_OFFSET)) /*!< QEI0 Pointer */
\r
494 #define QEI1_NS ((QEI_T *) (QEI1_BASE+NS_OFFSET)) /*!< QEI1 Pointer */
\r
495 #define RTC_NS ((RTC_T *) (RTC_BASE +NS_OFFSET)) /*!< RTC Pointer */
\r
496 #define ACMP01_NS ((ACMP_T *) (ACMP01_BASE+NS_OFFSET)) /*!< ACMP01 Pointer */
\r
497 #define DAC0_NS ((DAC_T *) (DAC0_BASE+NS_OFFSET)) /*!< DAC0 Pointer */
\r
498 #define DAC1_NS ((DAC_T *) (DAC1_BASE+NS_OFFSET)) /*!< DAC1 Pointer */
\r
499 #define EADC_NS ((EADC_T *) (EADC_BASE+NS_OFFSET)) /*!< EADC Pointer */
\r
500 #define SDH0_NS ((SDH_T *) (SDH0_BASE +NS_OFFSET))
\r
501 #define CRPT_NS ((CRPT_T *) (CRPT_BASE +NS_OFFSET))
\r
502 #define TRNG_NS ((TRNG_T *) (TRNG_BASE +NS_OFFSET)) /*!< Random Number Generator Pointer */
\r
503 #define BPWM0_NS ((BPWM_T *) (BPWM0_BASE+NS_OFFSET)) /*!< BPWM0 Pointer */
\r
504 #define BPWM1_NS ((BPWM_T *) (BPWM1_BASE+NS_OFFSET)) /*!< BPWM1 Pointer */
\r
505 #define EPWM0_NS ((EPWM_T *) (EPWM0_BASE+NS_OFFSET)) /*!< EPWM0 Pointer */
\r
506 #define EPWM1_NS ((EPWM_T *) (EPWM1_BASE+NS_OFFSET)) /*!< EPWM1 Pointer */
\r
507 #define SC0_NS ((SC_T *) (SC0_BASE +NS_OFFSET)) /*!< SC0 Pointer */
\r
508 #define SC1_NS ((SC_T *) (SC1_BASE +NS_OFFSET)) /*!< SC1 Pointer */
\r
509 #define SC2_NS ((SC_T *) (SC2_BASE +NS_OFFSET)) /*!< SC2 Pointer */
\r
510 #define EBI_NS ((EBI_T *) (EBI_BASE +NS_OFFSET)) /*!< EBI Pointer */
\r
511 #define CRC_NS ((CRC_T *) (CRC_BASE +NS_OFFSET)) /*!< CRC Pointer */
\r
512 #define USBD_NS ((USBD_T *) (USBD_BASE +NS_OFFSET)) /*!< USB Device Pointer */
\r
513 #define USBH_NS ((USBH_T *) (USBH_BASE +NS_OFFSET)) /*!< USBH Pointer */
\r
514 #define OTG_NS ((OTG_T *) (OTG_BASE +NS_OFFSET)) /*!< OTG Pointer */
\r
515 #define PDMA1_NS ((PDMA_T *) (PDMA1_BASE +NS_OFFSET)) /*!< PDMA1 Pointer */
\r
516 #define UI2C0_NS ((UI2C_T *) (USCI0_BASE +NS_OFFSET)) /*!< UI2C0 Pointer */
\r
517 #define UI2C1_NS ((UI2C_T *) (USCI1_BASE +NS_OFFSET)) /*!< UI2C1 Pointer */
\r
518 #define UI2C2_NS ((UI2C_T *) (USCI2_BASE +NS_OFFSET)) /*!< UI2C2 Pointer */
\r
519 #define USPI0_NS ((USPI_T *) (USCI0_BASE +NS_OFFSET)) /*!< USPI0 Pointer */
\r
520 #define USPI1_NS ((USPI_T *) (USCI1_BASE +NS_OFFSET)) /*!< USPI1 Pointer */
\r
521 #define UUART0_NS ((UUART_T *) (USCI0_BASE+NS_OFFSET)) /*!< UUART0 Pointer */
\r
522 #define UUART1_NS ((UUART_T *) (USCI1_BASE+NS_OFFSET)) /*!< UUART1 Pointer */
\r
523 #define SCU_NS ((SCU_T *) (SCU_BASE +NS_OFFSET)) /*!< SCU Pointer */
\r
524 #define ECAP0_NS ((ECAP_T *) (ECAP0_BASE+NS_OFFSET)) /*!< ECAP0 Pointer */
\r
525 #define ECAP1_NS ((ECAP_T *) (ECAP1_BASE+NS_OFFSET)) /*!< ECAP1 Pointer */
\r
526 #define CAN0_NS ((CAN_T *) (CAN0_BASE +NS_OFFSET)) /*!< CAN0 Pointer */
\r
528 /**@}*/ /* end of group PMODULE_NS */
\r
529 /**@}*/ /* end of group PMODULE */
\r
531 /* -------------------- End of section using anonymous unions ------------------- */
\r
532 #if defined (__CC_ARM)
\r
534 #elif defined (__ICCARM__)
\r
535 /* leave anonymous unions enabled */
\r
536 #elif (__ARMCC_VERSION >= 6010050)
\r
537 #pragma clang diagnostic pop
\r
538 #elif defined (__GNUC__)
\r
539 /* anonymous unions are enabled by default */
\r
540 #elif defined (__TMS470__)
\r
541 /* anonymous unions are enabled by default */
\r
542 #elif defined (__TASKING__)
\r
543 #pragma warning restore
\r
544 #elif defined (__CSMC__)
\r
545 /* anonymous unions are enabled by default */
\r
547 #warning Not supported compiler type
\r
555 /*=============================================================================*/
\r
556 typedef volatile unsigned char vu8;
\r
557 typedef volatile unsigned long vu32;
\r
558 typedef volatile unsigned short vu16;
\r
559 #define M8(adr) (*((vu8 *) (adr)))
\r
560 #define M16(adr) (*((vu16 *) (adr)))
\r
561 #define M32(adr) (*((vu32 *) (adr)))
\r
563 #define outpw(port,value) (*((volatile unsigned int *)(port))=(value))
\r
564 #define inpw(port) ((*((volatile unsigned int *)(port))))
\r
565 #define outpb(port,value) (*((volatile unsigned char *)(port))=(value))
\r
566 #define inpb(port) ((*((volatile unsigned char *)(port))))
\r
567 #define outps(port,value) (*((volatile unsigned short *)(port))=(value))
\r
568 #define inps(port) ((*((volatile unsigned short *)(port))))
\r
570 #define outp32(port,value) (*((volatile unsigned int *)(port))=(value))
\r
571 #define inp32(port) ((*((volatile unsigned int *)(port))))
\r
572 #define outp8(port,value) (*((volatile unsigned char *)(port))=(value))
\r
573 #define inp8(port) ((*((volatile unsigned char *)(port))))
\r
574 #define outp16(port,value) (*((volatile unsigned short *)(port))=(value))
\r
575 #define inp16(port) ((*((volatile unsigned short *)(port))))
\r
578 #define E_SUCCESS 0
\r
586 /* Bit Mask Definitions */
\r
587 #define BIT0 0x00000001UL
\r
588 #define BIT1 0x00000002UL
\r
589 #define BIT2 0x00000004UL
\r
590 #define BIT3 0x00000008UL
\r
591 #define BIT4 0x00000010UL
\r
592 #define BIT5 0x00000020UL
\r
593 #define BIT6 0x00000040UL
\r
594 #define BIT7 0x00000080UL
\r
595 #define BIT8 0x00000100UL
\r
596 #define BIT9 0x00000200UL
\r
597 #define BIT10 0x00000400UL
\r
598 #define BIT11 0x00000800UL
\r
599 #define BIT12 0x00001000UL
\r
600 #define BIT13 0x00002000UL
\r
601 #define BIT14 0x00004000UL
\r
602 #define BIT15 0x00008000UL
\r
603 #define BIT16 0x00010000UL
\r
604 #define BIT17 0x00020000UL
\r
605 #define BIT18 0x00040000UL
\r
606 #define BIT19 0x00080000UL
\r
607 #define BIT20 0x00100000UL
\r
608 #define BIT21 0x00200000UL
\r
609 #define BIT22 0x00400000UL
\r
610 #define BIT23 0x00800000UL
\r
611 #define BIT24 0x01000000UL
\r
612 #define BIT25 0x02000000UL
\r
613 #define BIT26 0x04000000UL
\r
614 #define BIT27 0x08000000UL
\r
615 #define BIT28 0x10000000UL
\r
616 #define BIT29 0x20000000UL
\r
617 #define BIT30 0x40000000UL
\r
618 #define BIT31 0x80000000UL
\r
621 /* Byte Mask Definitions */
\r
622 #define BYTE0_Msk (0x000000FFUL)
\r
623 #define BYTE1_Msk (0x0000FF00UL)
\r
624 #define BYTE2_Msk (0x00FF0000UL)
\r
625 #define BYTE3_Msk (0xFF000000UL)
\r
627 #define _GET_BYTE0(u32Param) (((u32Param) & BYTE0_Msk) ) /*!< Extract Byte 0 (Bit 0~ 7) from parameter u32Param */
\r
628 #define _GET_BYTE1(u32Param) (((u32Param) & BYTE1_Msk) >> 8UL) /*!< Extract Byte 1 (Bit 8~15) from parameter u32Param */
\r
629 #define _GET_BYTE2(u32Param) (((u32Param) & BYTE2_Msk) >> 16UL) /*!< Extract Byte 2 (Bit 16~23) from parameter u32Param */
\r
630 #define _GET_BYTE3(u32Param) (((u32Param) & BYTE3_Msk) >> 24UL) /*!< Extract Byte 3 (Bit 24~31) from parameter u32Param */
\r
633 /******************************************************************************/
\r
634 /* Peripheral header files */
\r
635 /******************************************************************************/
\r
651 #include "timer_pwm.h"
\r
662 #include "crypto.h"
\r
664 #include "scuart.h"
\r
665 #include "usci_spi.h"
\r
666 #include "usci_uart.h"
\r
667 #include "usci_i2c.h"
\r
672 #include "mkromlib.h"
\r
674 #endif /* __M2351_H__ */
\r
677 /* Copyright (C) 2017 Nuvoton Technology Corp. All rights reserved. */
\r