/**
******************************************************************************
* @file tae32f53xx.h
* @author MCD Application Team
* @brief CMSIS TAE32F53xx(Cortex-M3) Device Peripheral Access Layer Header File.
* This file contains all the peripheral register's definitions, bits
* definitions and memory mapping for TAE32F53xx devices.
*
* This file contains:
* - Data structures and the address mapping for all peripherals
* - Peripheral's registers declarations and bits definition
* - Macros to access peripheral registers hardware
*
******************************************************************************
* @attention
*
*
© Copyright (c) 2020 Tai-Action.
* All rights reserved.
*
* This software is licensed by Tai-Action under BSD 3-Clause license,
* the "License"; You may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
* opensource.org/licenses/BSD-3-Clause
*
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef _TAE32F53XX_H_
#define _TAE32F53XX_H_
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/** @defgroup TAE_CMSIS TAE CMSIS
* @brief TAE CMSIS
* @{
*/
/** @defgroup TAE32F53xx_Series TAE32F53xx Series
* @brief TAE32F53xx Series
* @{
*/
/* ------- Start of section using anonymous unions and disabling warnings ------- */
#if defined (__CC_ARM)
#pragma push
#pragma anon_unions
#elif defined (__ICCARM__)
#pragma language=extended
#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wc11-extensions"
#pragma clang diagnostic ignored "-Wreserved-id-macro"
#elif defined (__GNUC__)
/* anonymous unions are enabled by default */
#elif defined (__TMS470__)
/* anonymous unions are enabled by default */
#elif defined (__TASKING__)
#pragma warning 586
#elif defined (__CSMC__)
/* anonymous unions are enabled by default */
#else
#warning Not supported compiler type
#endif
/* Exported types ------------------------------------------------------------*/
/** @defgroup TAE32F53xx_Exported_Types TAE32F53xx Exported Types
* @brief TAE32F53xx Exported Types
* @{
*/
/** @defgroup TAE32F53xx_Peripheral_Interrupt_Number_Definition TAE32F53xx Peripheral Interrupt Number Definition
* @brief TAE32F53xx Peripheral Interrupt Number Definition
* @{
*/
/**
* @brief TAE32F53xx Peripheral Interrupt Number Definition
*/
typedef enum {
/* ------------------ Processor Exceptions Numbers ------------------ */
NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */
HardFault_IRQn = -13, /*!< 3 HardFault Interrupt */
MemoryManagement_IRQn = -12, /*!< 4 Memory Management Interrupt */
BusFault_IRQn = -11, /*!< 5 Bus Fault Interrupt */
UsageFault_IRQn = -10, /*!< 6 Usage Fault Interrupt */
SVCall_IRQn = -5, /*!< 11 SV Call Interrupt */
DebugMonitor_IRQn = -4, /*!< 12 Debug Monitor Interrupt */
PendSV_IRQn = -2, /*!< 14 Pend SV Interrupt */
SysTick_IRQn = -1, /*!< 15 System Tick Interrupt */
/* ------------------ Processor Interrupt Numbers ------------------- */
I2C0_IRQn = 0, /*!< I2C0 Interrupt */
I2C1_IRQn = 1, /*!< I2C1 Interrupt */
UART0_IRQn = 2, /*!< UART0 Interrupt */
UART1_IRQn = 3, /*!< UART1 Interrupt */
TMR0_IRQn = 4, /*!< TIMER0 Interrupt */
TMR1_IRQn = 5, /*!< TIMER1 Interrupt */
TMR2_IRQn = 6, /*!< TIMER2 Interrupt */
TMR3_IRQn = 7, /*!< TIMER3 Interrupt */
LVD_IRQn = 8, /*!< LVD Interrupt */
TMR4_IRQn = 9, /*!< TIMER4 Interrupt */
TMR5_IRQn = 10, /*!< TIMER5 Interrupt */
TMR6_IRQn = 11, /*!< TIMER6 Interrupt */
TMR7_IRQn = 12, /*!< TIMER7 Interrupt */
IWDG_IRQn = 13, /*!< IWDG Interrupt */
WWDG_IRQn = 14, /*!< WWDG Interrupt */
IIR0_IRQn = 15, /*!< IIR0 Interrupt */
IIR1_IRQn = 16, /*!< IIR1 Interrupt */
IIR2_IRQn = 17, /*!< IIR2 Interrupt */
IIR3_IRQn = 18, /*!< IIR3 Interrupt */
IIR4_IRQn = 19, /*!< IIR4 Interrupt */
ECU_IRQn = 20, /*!< ECU Cal Done Interrupt */
DMA_IRQn = 21, /*!< DMA Interrupt */
CAN_IRQn = 22, /*!< CAN Interrupt */
GPIOA_IRQn = 23, /*!< GPIOA Interrupt */
GPIOB_IRQn = 24, /*!< GPIOB Interrupt */
GPIOC_IRQn = 25, /*!< GPIOC Interrupt */
GPIOD_IRQn = 26, /*!< GPIOD Interrupt */
FLASH_IRQn = 27, /*!< FLASH Interrupt */
DFLASH_IRQn = 28, /*!< DFLASH Interrupt */
HRPWM_MSTR_IRQn = 29, /*!< Hrpwm Master Global Interrupt */
HRPWM_SLV0_IRQn = 30, /*!< Hrpwm Slave0 Global Interrupt */
HRPWM_SLV1_IRQn = 31, /*!< Hrpwm Slave1 Global Interrupt */
HRPWM_SLV2_IRQn = 32, /*!< Hrpwm Slave2 Global Interrupt */
HRPWM_SLV3_IRQn = 33, /*!< Hrpwm Slave3 Global Interrupt */
HRPWM_SLV4_IRQn = 34, /*!< Hrpwm Slave4 Global Interrupt */
HRPWM_SLV5_IRQn = 35, /*!< Hrpwm Slave5 Global Interrupt */
HRPWM_FLT_IRQn = 36, /*!< Hrpwm All Fault Interrupt */
ADC0_NORM_IRQn = 37, /*!< ADC0 Normal Global Interrupt */
ADC0_HALF_IRQn = 38, /*!< ADC0 DMA Half Done Interrupt */
ADC0_FULL_IRQn = 39, /*!< ADC0 DMA Full Done Interrupt */
ADC0_SAMP_IRQn = 40, /*!< ADC0 Sample Done Interrupt */
ADC1_NORM_IRQn = 41, /*!< ADC1 Normal Global Interrupt */
ADC1_HALF_IRQn = 42, /*!< ADC1 DMA Half Done Interrupt */
ADC1_FULL_IRQn = 43, /*!< ADC1 DMA Full Done Interrupt */
ADC1_SAMP_IRQn = 44, /*!< ADC1 Sample Done Interrupt */
DAC_IRQn = 45, /*!< DAC Interrupt */
CMP_IRQn = 46, /*!< CMP Interrupt */
USB_STA_IRQn = 47, /*!< USB Staus Interrupt */
USB_DET_IRQn = 48, /*!< USB Detect Interrupt */
USB_LPM_IRQn = 49, /*!< USB LPM Interrupt */
USB_EP_IRQn = 50, /*!< USB Endpoint Interrupt */
DALI_IRQn = 51, /*!< DALI Interrupt */
} IRQn_Type;
/**
* @}
*/
/** @defgroup TAE32F53xx_Configuration_Section_For_CMSIS TAE32F53xx Configuration Section For CMSIS
* @brief TAE32F53xx Configuration Section For CMSIS
* @{
*/
/**
* @brief Configuration of the Cortex-M3 Processor and Core Peripherals
*/
#define __CM3_REV 0x0201U /*!< Core revision r2p1 */
#define __MPU_PRESENT 0U /*!< MPU present */
#define __VTOR_PRESENT 1U /*!< VTOR present */
#define __NVIC_PRIO_BITS 3U /*!< Number of Bits used for Priority Levels */
#define __Vendor_SysTickConfig 0U /*!< Set to 1 if different SysTick Config is used */
/**
* @brief CMSIS Device version number v5.3.1
*/
#define __TAE32F53XX_CMSIS_VERSION_MAIN (0x05) /*!< [31:24] main version */
#define __TAE32F53XX_CMSIS_VERSION_SUB1 (0x03) /*!< [23:16] sub1 version */
#define __TAE32F53XX_CMSIS_VERSION_SUB2 (0x01) /*!< [15:8] sub2 version */
#define __TAE32F53XX_CMSIS_VERSION_RC (0x00) /*!< [7:0] release candidate */
#define __TAE32F53XX_CMSIS_VERSION ((__TAE32F53XX_CMSIS_VERSION_MAIN << 24) |\
(__TAE32F53XX_CMSIS_VERSION_SUB1 << 16) |\
(__TAE32F53XX_CMSIS_VERSION_SUB2 << 8 ) |\
(__TAE32F53XX_CMSIS_VERSION_RC))
/**
* @}
*/
/* Includes ------------------------------------------------------------------*/
#include /*!< Standard int head file */
#include "core_cm3.h" /*!< Processor and core peripherals */
#include "system_tae32f53xx.h" /*!< TAE32F53xx System Header */
/** @defgroup TAE32F53xx_Peripheral_Registers_Structures TAE32F53xx Peripheral Registers Structures
* @brief TAE32F53xx Peripheral Registers Structures
* @{
*/
/**
* @brief Embedded FLASH Controller Registers Structure
*/
typedef struct {
__IO uint32_t CR; /*!< Address offset: 0x00: FLASH Control Register */
__IO uint32_t LPR; /*!< Address offset: 0x04: FLASH Lowpower Register */
__IO uint32_t ISR; /*!< Address offset: 0x08: FLASH Interrupt Status Register */
__IO uint32_t SR; /*!< Address offset: 0x0C: FLASH Status Register */
__IO uint32_t DR0; /*!< Address offset: 0x10: FLASH Data Register 0 */
__IO uint32_t DR1; /*!< Address offset: 0x14: FLASH Data Register 1 */
__IO uint32_t DR2; /*!< Address offset: 0x18: FLASH Data Register 2 */
__IO uint32_t DR3; /*!< Address offset: 0x1C: FLASH Data Register 3 */
__IO uint32_t ADDR; /*!< Address offset: 0x20: FLASH Address Register */
__I uint32_t RESERVED0; /*!< Reserved */
__IO uint32_t ECR; /*!< Address offset: 0x28: FLASH Erase Control Register */
__I uint32_t RESERVED1; /*!< Reserved */
__IO uint32_t TR0; /*!< Address offset: 0x30: FLASH Timing Register 0 */
__IO uint32_t TR1; /*!< Address offset: 0x34: FLASH Timing Register 1 */
__IO uint32_t TR2; /*!< Address offset: 0x38: FLASH Timing Register 2 */
__IO uint32_t TR3; /*!< Address offset: 0x3C: FLASH Timing Register 3 */
__I uint32_t RESERVED2[4]; /*!< Reserved */
__IO uint32_t KEYR; /*!< Address offset: 0x50: FLASH Key Register */
__I uint32_t RESERVED3[3]; /*!< Reserved */
__IO uint32_t RDPR; /*!< Address offset: 0x60: FLASH Read Protect Register */
__I uint32_t RESERVED4[3]; /*!< Reserved */
__IO uint32_t WRPR; /*!< Address offset: 0x70: FLASH Write Protect Register */
__I uint32_t RESERVED5[3]; /*!< Reserved */
__IO uint32_t UID[4]; /*!< Address offset: 0x80: FLASH Unique Identification */
} FLASH_TypeDef;
/**
* @brief Data FLASH Controller Registers Structure
*/
typedef struct {
__IO uint32_t CR; /*!< Address offset: 0x00: DFLASH Control Register */
__IO uint32_t LPR; /*!< Address offset: 0x04: DFLASH Lowpower Register */
__IO uint32_t ISR; /*!< Address offset: 0x08: DFLASH Interrupt Status Register */
__IO uint32_t SR; /*!< Address offset: 0x0C: DFLASH Status Register */
__IO uint32_t DR; /*!< Address offset: 0x10: DFLASH Data Register */
__IO uint32_t ADDR; /*!< Address offset: 0x14: DFLASH Address Register */
__IO uint32_t ECR; /*!< Address offset: 0x18: DFLASH Erase Control Register */
__I uint32_t RESERVED0; /*!< Reserved */
__IO uint32_t TR0; /*!< Address offset: 0x20: DFLASH Timing Register 0 */
__IO uint32_t TR1; /*!< Address offset: 0x24: DFLASH Timing Register 1 */
__IO uint32_t TR2; /*!< Address offset: 0x28: DFLASH Timing Register 2 */
__IO uint32_t TR3; /*!< Address offset: 0x2C: DFLASH Timing Register 3 */
__IO uint32_t KEYR; /*!< Address offset: 0x30: DFLASH Key Register */
} DFLASH_TypeDef;
/**
* @brief General Purpose I/O (GPIO) Registers Structure
*/
typedef struct {
__IO uint32_t BSRR; /*!< Address offset: 0x00: GPIO Bit Set/Reset Register */
__IO uint32_t DR; /*!< Address offset: 0x04: GPIO Data Register */
__IO uint32_t PUR; /*!< Address offset: 0x08: GPIO Pullup Register */
__IO uint32_t PDR; /*!< Address offset: 0x0C: GPIO Pulldown Register */
__IO uint32_t DSR; /*!< Address offset: 0x10: GPIO Driver Strength Register */
__IO uint32_t IHYR; /*!< Address offset: 0x14: GPIO Input Hysteresis Register */
__IO uint32_t OTYPR; /*!< Address offset: 0x18: GPIO Output Type Register */
__IO uint32_t OSRR; /*!< Address offset: 0x1C: GPIO Output Slew Rate Register */
__IO uint32_t IER; /*!< Address offset: 0x20: GPIO Interrupt Enable Register */
__IO uint32_t ITER; /*!< Address offset: 0x24: GPIO Interrupt Trigger Enable Register */
__IO uint32_t RFTSR; /*!< Address offset: 0x28: GPIO Rising/Falling Trigger Selection Register */
__IO uint32_t PR; /*!< Address offset: 0x2C: GPIO Pending Register */
__IO uint32_t SDER; /*!< Address offset: 0x30: GPIO Sync/Debounce Enable Register */
__I uint32_t RESERVED0[3]; /*!< Reserved */
__IO uint32_t PMUXR[2]; /*!< Address offset: 0x40: GPIO Pin-Mux Register */
} GPIO_TypeDef;
/**
* @brief Window WATCHDOG (WWDG) Registers Structure
*/
typedef struct {
__IO uint32_t CR; /*!< Address offset: 0x00: WWDG Control Register */
__IO uint32_t WVR; /*!< Address offset: 0x04: WWDG Window Value Register */
__IO uint32_t CVR; /*!< Address offset: 0x08: WWDG Counter Value Register */
__IO uint32_t PSCR; /*!< Address offset: 0x0C: WWDG Prescaler Register */
__IO uint32_t ISR; /*!< Address offset: 0x10: WWDG Interrupt Status Register */
} WWDG_TypeDef;
/**
* @brief Independent WATCHDOG (IWDG) Registers Structure
*/
typedef struct {
__IO uint32_t KEYR; /*!< Address offset: 0x00: IWDG Key register */
__IO uint32_t CR; /*!< Address offset: 0x04: IWDG Control register */
__IO uint32_t RLR; /*!< Address offset: 0x08: IWDG Reload register */
__IO uint32_t PSCR; /*!< Address offset: 0x0C: IWDG Prescaler register */
__IO uint32_t SR; /*!< Address offset: 0x10: IWDG Status register */
} IWDG_TypeDef;
/**
* @brief Infinite Impulse Response (IIR) Registers Structure
*/
typedef struct {
__IOM uint32_t CR0; /*!< Address offset: 0x00: IIR Control Register */
__IOM uint32_t CR1; /*!< Address offset: 0x04: IIR Start Register */
__IOM uint32_t IER; /*!< Address offset: 0x08: IIR Interrupt Register */
__IOM uint32_t ISR; /*!< Address offset: 0x0C: IIR Pending Register */
__IM uint32_t RESERVED0; /*!< Reserved */
__IOM uint32_t DOR; /*!< Address offset: 0x14: IIR DataO Register */
__IM uint32_t RESERVED1[3]; /*!< Reserved */
__IOM uint32_t DIAR; /*!< Address offset: 0x24: IIR DataI Address Register */
__IM uint32_t RESERVED2; /*!< Reserved */
__IOM uint32_t SCALR; /*!< Address offset: 0x2C: IIR Scale Register */
__IOM uint32_t BxCOEFR[5]; /*!< Address offset: 0x30: IIR BxCOEF Register(x = 0...4) */
__IOM uint32_t AxCOEFR[4]; /*!< Address offset: 0x44: IIR AxCOEF Register(x = 1...4) */
__IM uint32_t RESERVED3[4]; /*!< Reserved */
__IOM uint32_t DIASR; /*!< Address offset: 0x64: IIR DataI Addr Shadow Register */
__IM uint32_t RESERVED4; /*!< Reserved */
__IOM uint32_t SCALSR; /*!< Address offset: 0x6C: IIR Scale Shadow Register */
__IOM uint32_t BxCOEFSR[5]; /*!< Address offset: 0x70: IIR B0COEF Shadow Register(x = 0...4) */
__IOM uint32_t AxCOEFSR[4]; /*!< Address offset: 0x84: IIR A1COEF Shadow Register(x = 1...4) */
} IIR_TypeDef;
/**
* @brief TIMER Registers Structure
*/
typedef struct {
__IOM uint32_t CR; /*!< Address offset: 0x00: Timer Counter Control Register */
__IOM uint32_t CCCR; /*!< Address offset: 0x04: Timer Capture Compare Control Register */
__IOM uint32_t EGR; /*!< Address offset: 0x08: Timer Event Generation Register */
__IOM uint32_t ICFR; /*!< Address offset: 0x0C: Timer Input Capture Filter Register */
__IOM uint32_t ISR; /*!< Address offset: 0x10: Timer Interrupt Status Register */
__IM uint32_t RESERVED[3]; /*!< Reserved */
__IOM uint32_t CSVR; /*!< Address offset: 0x20: Timer Counter Start Register */
__IOM uint32_t CEVR; /*!< Address offset: 0x24: Timer Counter End Register */
__IOM uint32_t CCR; /*!< Address offset: 0x28: Timer Capture Compare Register */
__IOM uint32_t PSCR; /*!< Address offset: 0x2C: Timer Prescaler Register */
__IOM uint32_t CNTR; /*!< Address offset: 0x30: Timer Counter Register */
__IOM uint32_t ETER; /*!< Address offset: 0x34: Timer Export Trigger Event Register */
} TMR_TypeDef;
/**
* @brief TIMERGRP (Timer Group Sync Register) Registers Structure
*/
typedef struct {
__IOM uint32_t SYNCR; /*!< Timer Group Sync Register */
} TMRGRP_TypeDef;
/**
* @brief UART Registers Structure
*/
typedef struct {
union {
__IOM uint32_t RBR; /*!< Address offset: 0x00: Receive Buffer Register */
__IOM uint32_t THR; /*!< Address offset: 0x00: Transmit Holding Register */
__IOM uint32_t DLL; /*!< Address offset: 0x00: Divisor Latch Low */
};
union {
__IOM uint32_t DLH; /*!< Address offset: 0x04: Divisor Latch High */
__IOM uint32_t IER; /*!< Address offset: 0x04: Interrupt Enable Register */
};
union {
__IOM uint32_t IIR; /*!< Address offset: 0x08: Interrupt Identity Register */
__IOM uint32_t FCR; /*!< Address offset: 0x08: FIFO Control Register */
};
__IOM uint32_t LCR; /*!< Address offset: 0x0C: Line Control Register */
__IM uint32_t RESERVED0; /*!< Address offset: 0x10: Reserved */
__IOM uint32_t LSR; /*!< Address offset: 0x14: Line Status Register */
__IM uint32_t RESERVED1[25]; /*!< Address offset: 0x18~0x78: Reserved */
__IOM uint32_t USR; /*!< Address offset: 0x7C: UART Status Register */
__IOM uint32_t TFL; /*!< Address offset: 0x80: Transmit FIFO Level */
__IOM uint32_t RFL; /*!< Address offset: 0x84: Receive FIFO Level */
__IM uint32_t RESERVED2[7]; /*!< Address offset: 0x88~0xA0: Reserved */
__IOM uint32_t HTX; /*!< Address offset: 0xA4: Halt TX */
__IM uint32_t RESERVED3; /*!< Address offset: 0xA8: Reserved */
__IOM uint32_t TCR; /*!< Address offset: 0xAC: Transceiver Control Register */
__IOM uint32_t DE_EN; /*!< Address offset: 0xB0: Driver Output Enable Register */
__IOM uint32_t RE_EN; /*!< Address offset: 0xB4: Receiver Output Enable Register */
__IOM uint32_t DET; /*!< Address offset: 0xB8: Driver Output Enable Timing Register */
__IOM uint32_t TAT; /*!< Address offset: 0xBC: TurnAround Timing Register */
__IOM uint32_t DLF; /*!< Address offset: 0xC0: Divisor Latch Fraction Register */
__IOM uint32_t RAR; /*!< Address offset: 0xC4: Receive Address Register */
__IOM uint32_t TAR; /*!< Address offset: 0xC8: Transmit Address Register */
__IOM uint32_t LCR_EXT; /*!< Address offset: 0xCC: Line Extended Control Register */
} UART_TypeDef;
/**
* @brief DMA Channel Numbers
*/
#define DMA_CHN_NB 2
/**
* @brief DMA Channel
*/
typedef struct {
__IO uint32_t SAR; /*!< Address offset: 0x00: DMA Channel Source Address Register */
__I uint32_t RESERVED0; /*!< Address offset: 0x04: Reserved */
__IO uint32_t DAR; /*!< Address offset: 0x08: DMA Channel Destination Address Register */
__I uint32_t RESERVED1[3]; /*!< Address offset: 0x0C~0x14: Reserved */
__IO uint32_t CR0; /*!< Address offset: 0x18: DMA Channel Control Register0 */
__IO uint32_t CR1; /*!< Address offset: 0x1C: DMA Channel Control Register1 */
__I uint32_t RESERVED2[8]; /*!< Address offset: 0x20~0x3C: Reserved */
__IO uint32_t CR2; /*!< Address offset: 0x40: DMA Channel Config Register0 */
__IO uint32_t CR3; /*!< Address offset: 0x44: DMA Channel Config Register1 */
__IO uint32_t RESERVED3[4]; /*!< Address offset: 0x48~0x54: Reserved */
} DMA_CH_TypeDef;
/**
* @brief DMA Registers Structure
*/
typedef struct {
DMA_CH_TypeDef CH[DMA_CHN_NB]; /*!< DMA Channel control Register */
__IM uint32_t RESERVED4[132]; /*!< Reserved */
__IOM uint32_t TSR; /*!< Address offset: 0x2C0: DMA Tranfer Status Register */
__IM uint32_t RESERVED5; /*!< Reserved */
__IOM uint32_t BTSR; /*!< Address offset: 0x2C8: DMA Block Tranfer Status Register */
__IM uint32_t RESERVED6; /*!< Reserved */
__IOM uint32_t STSR; /*!< Address offset: 0x2D0: DMA Source Transfer Status Register */
__IM uint32_t RESERVED7; /*!< Reserved */
__IOM uint32_t DTSR; /*!< Address offset: 0x2D8: DMA Destination Transfer Status Register */
__IM uint32_t RESERVED8; /*!< Reserved */
__IOM uint32_t TESR; /*!< Address offset: 0x2E0: DMA Transfer Error Status Register */
__IM uint32_t RESERVED9; /*!< Reserved */
__IOM uint32_t TIPR; /*!< Address offset: 0x2E8: DMA Transfer Interrupt Pending Register */
__IM uint32_t RESERVED10; /*!< Reserved */
__IOM uint32_t BTIPR; /*!< Address offset: 0x2F0: DMA Block Transfer Interrupt Pending Register */
__IM uint32_t RESERVED11; /*!< Reserved */
__IOM uint32_t STIPR; /*!< Address offset: 0x2F8: DMA Source Transfer Interrupt Pending Register */
__IM uint32_t RESERVED12; /*!< Reserved */
__IOM uint32_t DTIPR; /*!< Address offset: 0x300: DMA Destination Transfer Interrupt Pending Register */
__IM uint32_t RESERVED13; /*!< Reserved */
__IOM uint32_t TEIPR; /*!< Address offset: 0x308: DMA Transfer Error Interrupt Pending Register */
__IM uint32_t RESERVED14; /*!< Reserved */
__IOM uint32_t TIMR; /*!< Address offset: 0x310: DMA Transfer Interrupt Mask Register */
__IM uint32_t RESERVED15; /*!< Reserved */
__IOM uint32_t BTIMR; /*!< Address offset: 0x318: DMA Block Transfer Interrupt Mask Register */
__IM uint32_t RESERVED16; /*!< Reserved */
__IOM uint32_t STIMR; /*!< Address offset: 0x320: DMA Source Transfer IntClear Register */
__IM uint32_t RESERVED17; /*!< Reserved */
__IOM uint32_t DTIMR; /*!< Address offset: 0x328: DMA Destination Transfer Interrupt Mask Register */
__IM uint32_t RESERVED18; /*!< Reserved */
__IOM uint32_t TEIMR; /*!< Address offset: 0x330: DMA Transfer Error Interrupt Mask Register */
__IM uint32_t RESERVED19; /*!< Reserved */
__IOM uint32_t TCR; /*!< Address offset: 0x338: DMA Transfer Clear Register */
__IM uint32_t RESERVED20; /*!< Reserved */
__IOM uint32_t BTCR; /*!< Address offset: 0x340: DMA Block Transfer Clear Register */
__IM uint32_t RESERVED21; /*!< Reserved */
__IOM uint32_t STCR; /*!< Address offset: 0x348: DMA Source Transfer Clear Register */
__IM uint32_t RESERVED22; /*!< Reserved */
__IOM uint32_t DTCR; /*!< Address offset: 0x350: DMA Destination Transfer Clear Register */
__IM uint32_t RESERVED23; /*!< Reserved */
__IOM uint32_t TECR; /*!< Address offset: 0x358: DMA Transfer Error Clear Register */
__IM uint32_t RESERVED24[15]; /*!< Reserved */
__IOM uint32_t CR0; /*!< Address offset: 0x398: DMA Control Register0 */
__IM uint32_t RESERVED25; /*!< Reserved */
__IOM uint32_t CR1; /*!< Address offset: 0x3A0: DMA Control Register1 */
} DMA_TypeDef;
/**
* @brief ADC DMA
*/
typedef struct {
__IO uint32_t TCR; /*!< Address offset: 0x110: ADC Transfer Control Register */
__IO uint32_t TAR; /*!< Address offset: 0x114: ADC Transfer Address Register */
__I uint32_t RESERVED; /*!< Reserved */
__IO uint32_t TLR; /*!< Address offset: 0x11C: ADC Transfer Length Register */
} ADC_DMA_TypeDef;
/**
* @brief Analog to Digital Converter (ADC) Registers Structure
*/
typedef struct {
__IO uint32_t CR0; /*!< Address offset: 0x00 : ADC Control Register 0 */
__IO uint32_t CR1; /*!< Address offset: 0x04 : ADC Control Register 1 */
__IO uint32_t CR2; /*!< Address offset: 0x08 : ADC Control Register 2 */
__IO uint32_t DIFSEL; /*!< Address offset: 0x0C : ADC Differential Select Register */
__IO uint32_t IER; /*!< Address offset: 0x10 : ADC Interrupt Enable Register */
__IO uint32_t ISR; /*!< Address offset: 0x14 : ADC Interrupt Status Register */
__IO uint32_t SIER; /*!< Address offset: 0x18 : ADC Sample Interrupt Enable Register */
__IO uint32_t SISR; /*!< Address offset: 0x1C : ADC Sample Interrupt Status Register */
__IO uint32_t SMPR0; /*!< Address offset: 0x20 : ADC Sample Time Register 0 */
__IO uint32_t SMPR1; /*!< Address offset: 0x24 : ADC Sample Time Register 1 */
__IO uint32_t CALR0; /*!< Address offset: 0x28 : ADC Calibration Data Register 0 */
__IO uint32_t CALR1; /*!< Address offset: 0x2C : ADC Calibration Data Register 1 */
__IO uint32_t SQR0; /*!< Address offset: 0x30 : ADC Regular Sequence Register 0 */
__IO uint32_t SQR1; /*!< Address offset: 0x34 : ADC Regular Sequence Register 1 */
__IO uint32_t LR; /*!< Address offset: 0x38 : ADC Regular Length Register */
__IO uint32_t DR; /*!< Address offset: 0x3C : ADC Regular Data Register */
__IO uint32_t JSQR; /*!< Address offset: 0x40 : ADC Injected Sequence Register */
__IO uint32_t JLR; /*!< Address offset: 0x44 : ADC Injected Length Register */
__I uint32_t RESERVED0[2]; /*!< Reserved */
__IO uint32_t JDR[4]; /*!< Address offset: 0x50 : ADC Injected Data Register */
__IO uint32_t TR[3]; /*!< Address offset: 0x60 : ADC Watchdog Threshold Register */
__I uint32_t RESERVED1; /*!< Reserved */
__IO uint32_t AWDCR[3]; /*!< Address offset: 0x70 : ADC Watchdog Control Register */
__I uint32_t RESERVED2; /*!< Reserved */
__IO uint32_t OFR[4]; /*!< Address offset: 0x80 : ADC Single-End Offset Register */
__IO uint32_t DOFR[4]; /*!< Address offset: 0x90 : ADC Differential Offset Register */
__IO uint32_t GCR[4]; /*!< Address offset: 0xA0 : ADC Single-End Gain Coeff Register */
__IO uint32_t DGCR[4]; /*!< Address offset: 0xB0 : ADC Channel Data Register */
__IO uint32_t ECR[4]; /*!< Address offset: 0xC0 : ADC Event Control Register */
__I uint32_t CDR[12]; /*!< Address offset: 0xD0 : ADC Differential Gain Coeff Register */
__IO uint32_t HIER; /*!< Address offset: 0x100: ADC Half Interrupt Enable Register */
__IO uint32_t HISR; /*!< Address offset: 0x104: ADC Half Interrupt Status Register */
__IO uint32_t FIER; /*!< Address offset: 0x108: ADC Full Interrupt Enable Register */
__IO uint32_t FISR; /*!< Address offset: 0x10C: ADC Full Interrupt Status Register */
ADC_DMA_TypeDef DMA_CR[12]; /*!< Address offset: 0x110: ADC Transfer Control Register */
} ADC_TypeDef;
/**
* @brief DAC Channel Numbers
*/
#define DAC_CHN_NB 4
/**
* @brief Digital to Analog Converter Registers Structure
*/
typedef struct {
__IO uint32_t CR[DAC_CHN_NB]; /*!< DAC Control Register */
__IO uint32_t ISR; /*!< DAC Interrupt Status Register */
__IO uint32_t SWTR; /*!< DAC Software Trigger Register */
__I uint32_t RESERVED0[2]; /*!< Reserved */
__IO uint32_t WDR[DAC_CHN_NB]; /*!< DAC Write Data Register */
__IO uint32_t RDR[DAC_CHN_NB]; /*!< DAC Read Data Register */
__IO uint32_t SIDR[DAC_CHN_NB]; /*!< DAC Sawtooth Increment Data Register */
__IO uint32_t SRDR[DAC_CHN_NB]; /*!< DAC Sawtooth Reset Data Register */
} DAC_TypeDef;
/**
* @brief CMP Channel Number
*/
#define CMP_CHN_NB 4
/**
* @brief Comparator (CMP) Registers Structure
*/
typedef struct {
__IO uint32_t CR[CMP_CHN_NB]; /*!< CMP Control Register */
__IO uint32_t SR; /*!< CMP Status Register */
__IO uint32_t DEBR[CMP_CHN_NB]; /*!< CMP Debounce Register */
} CMP_TypeDef;
/**
* @brief Electricity Calculate Unit (ECU) Registers Structure
*/
typedef struct {
__IO uint32_t CON; /*!< Address offset: 0x00: ECU Control Register */
__IO uint32_t PRC; /*!< Address offset: 0x04: ECU Exit Event Select Register */
__IO uint32_t SQRT_IN; /*!< Address offset: 0x08: ECU Sqrt Data Input Register */
__I uint32_t SQRT_OUT; /*!< Address offset: 0x0C: ECU Sqrt Data Output Register */
__IO uint32_t V_ADDR1; /*!< Address offset: 0x10: ECU V Data Addr Register */
__IO uint32_t V_ADDR2; /*!< Address offset: 0x14: ECU Register */
__IO uint32_t I_ADDR1; /*!< Address offset: 0x18: ECU I Data Addr Register */
__IO uint32_t I_ADDR2; /*!< Address offset: 0x1C: ECU Register */
__I uint32_t V; /*!< Address offset: 0x20: ECU V Data Read Register */
__I uint32_t I; /*!< Address offset: 0x24: ECU I Data Read Register */
__I uint32_t P; /*!< Address offset: 0x28: ECU P Data Read Register */
__I uint32_t Q; /*!< Address offset: 0x2C: ECU Q Data Read Register */
__I uint32_t S; /*!< Address offset: 0x30: ECU S Data Read Register */
__I uint32_t PF; /*!< Address offset: 0x34: ECU PF Data Read Register */
__I uint32_t F; /*!< Address offset: 0x38: ECU F Data Read Register */
} ECU_TypeDef;
/**
* @brief HRPWM Master Registers
*/
typedef struct {
__IO uint32_t MCR ; /*!< Address offset: 0x00: HRPWM Master PWM Control Register */
__I uint32_t RESERVED0 ; /*!< Reserved */
__IO uint32_t MISR; /*!< Address offset: 0x08: HRPWM Master PWM Interrupt Status Register */
__IO uint32_t MIER; /*!< Address offset: 0x0C: HRPWM Master PWM Interrupt Enable Register */
__IO uint32_t MCNTR; /*!< Address offset: 0x10: HRPWM Master PWM Counter Register */
__IO uint32_t MPER; /*!< Address offset: 0x14: HRPWM Master Period Value Register */
__IO uint32_t MCMPAR; /*!< Address offset: 0x18: HRPWM Master PWM Cmp A Value Register */
__IO uint32_t MCMPBR; /*!< Address offset: 0x1c: HRPWM Master PWM Cmp B Value Register */
__IO uint32_t MCMPCR; /*!< Address offset: 0x20: HRPWM Master PWM Cmp C Value Register */
__IO uint32_t MCMPDR; /*!< Address offset: 0x24: HRPWM Master PWM Cmp D Value Register */
__I uint32_t RESERVED1[22]; /*!< Reserved */
} HRPWM_MSTR_TypeDef;
/**
* @brief HRPWM PWMx Registers
*/
typedef struct {
__IO uint32_t CR0; /*!< Address offset: 0x80: HRPWM Hrpwmx Control Register 0 */
__IO uint32_t CR1; /*!< Address offset: 0x84: HRPWM Hrpwmx Control Register 1 */
__IO uint32_t ISR; /*!< Address offset: 0x88: HRPWM Hrpwmx Interrupt Status Register */
__IO uint32_t IER; /*!< Address offset: 0x8C: HRPWM Hrpwmx Interrupt Enable Register */
__IO uint32_t CNTR; /*!< Address offset: 0x90: HRPWM Hrpwmx Counter Register */
__IO uint32_t PERR; /*!< Address offset: 0x94: HRPWM Hrpwmx Period Value Register */
__IO uint32_t CMPAR; /*!< Address offset: 0x98: HRPWM Hrpwmx Cmp A Register */
__IO uint32_t CMPBR; /*!< Address offset: 0x9C: HRPWM Hrpwmx Cmp B Register */
__IO uint32_t CMPCR; /*!< Address offset: 0xA0: HRPWM Hrpwmx Cmp C Register */
__IO uint32_t CMPDR; /*!< Address offset: 0xA4: HRPWM Hrpwmx Cmp D Register */
__IO uint32_t DTR; /*!< Address offset: 0xA8: HRPWM Hrpwmx Dead Time Register */
__IO uint32_t SETAR; /*!< Address offset: 0xAC: HRPWM Hrpwmx Output A Set Register */
__IO uint32_t CLRAR; /*!< Address offset: 0xB0: HRPWM Hrpwmx Output A Clear Register */
__IO uint32_t SETBR; /*!< Address offset: 0xB4: HRPWM Hrpwmx Output B Set Register */
__IO uint32_t CLRBR; /*!< Address offset: 0xB8: HRPWM Hrpwmx Output B Clear Register */
__IO uint32_t EEFR0; /*!< Address offset: 0xBC: HRPWM Hrpwmx External Event Register */
__IO uint32_t EEFR1; /*!< Address offset: 0xC0: HRPWM Hrpwmx External Event5 Register */
__IO uint32_t RSTR; /*!< Address offset: 0xC4: HRPWM Hrpwmx Reset Register */
__IO uint32_t CHPR; /*!< Address offset: 0xC8: HRPWM Hrpwmx Chopper Register */
__IO uint32_t OUTR; /*!< Address offset: 0xCC: HRPWM Hrpwmx Output Register */
__IO uint32_t FLTR; /*!< Address offset: 0xD0: HRPWM Hrpwmx Fault Register */
__I uint32_t RESERVED[11]; /*!< Reserved */
} HRPWM_PWMx_TypeDef;
/**
* @brief HRPWM Common Registers
*/
typedef struct {
__IO uint32_t CR0; /*!< Address offset: 0x380: HRPWM Control Register 0 */
__IO uint32_t CR1; /*!< Address offset: 0x384: HRPWM Control Register 1 */
__IO uint32_t CR2; /*!< Address offset: 0x388: HRPWM Control Register 2 */
__IO uint32_t ISR; /*!< Address offset: 0x38C: HRPWM Interrupt Status Register */
__IO uint32_t IER; /*!< Address offset: 0x390: HRPWM Interrupt Enable Register */
__IO uint32_t OENR; /*!< Address offset: 0x394: HRPWM Output Enable Register */
__IO uint32_t ODISR; /*!< Address offset: 0x398: HRPWM Output Disable Register */
__IO uint32_t EECR0; /*!< Address offset: 0x39C: HRPWM External Event Register 0 */
__IO uint32_t EECR1; /*!< Address offset: 0x3A0: HRPWM External Event Register 1 */
__IO uint32_t EECR2; /*!< Address offset: 0x3A4: HRPWM External Event Register 2 */
__IO uint32_t ADTR[8]; /*!< Address offset: 0x3A8: HRPWM ADDA Trigger Post Scaler Register */
__IO uint32_t ADPSR; /*!< Address offset: 0x3C8: HRPWM SOC Length Register */
__IO uint32_t DLLCR; /*!< Address offset: 0x3CC: HRPWM DLL Control Register */
__IO uint32_t FLTINR0; /*!< Address offset: 0x3D0: HRPWM Fault Input Register 0 */
__IO uint32_t FLTINR1; /*!< Address offset: 0x3D4: HRPWM Fault Input Register 1 */
__IO uint32_t FLTINR2; /*!< Address offset: 0x3D8: HRPWM Fault Input Register 2 */
__IO uint32_t FLTINR3; /*!< Address offset: 0x3DC: HRPWM Fault Input Register 3 */
} HRPWM_COMMON_TypeDef;
/**
* @brief High Resolution PWM (HRPWM) Registers Structure
*/
typedef struct {
HRPWM_MSTR_TypeDef Master; /*!< HRPWM Master Registers */
HRPWM_PWMx_TypeDef PWM[6]; /*!< HRPWM PWMx Registers */
HRPWM_COMMON_TypeDef Common; /*!< HRPWM Common Registers */
} HRPWM_TypeDef;
/**
* @brief USB DMA
*/
typedef struct __attribute__((packed)) {
__IO uint16_t CTRL; /*!< Address offset: 0x00 USB DMA Control Register */
__I uint8_t RESERVED0[2]; /*!< Address offset: 0x02~0x03 Reserverd */
__IO uint32_t ADDR; /*!< Address offset: 0x04 USB DMA Address Register */
__IO uint32_t CNT; /*!< Address offset: 0x08 USB DMA Count Register */
__I uint8_t RESERVED1[4]; /*!< Address offset: 0x0C~0x0F Reserverd */
} USB_DMA;
/**
* @brief USB Registers Structure
*/
typedef struct __attribute__((packed)) {
/* USB Common Register */
__IO uint8_t FADDR; /*!= 6010050))
#pragma clang diagnostic pop
#elif defined (__GNUC__)
/* anonymous unions are enabled by default */
#elif defined (__TMS470__)
/* anonymous unions are enabled by default */
#elif defined (__TASKING__)
#pragma warning restore
#elif defined (__CSMC__)
/* anonymous unions are enabled by default */
#else
#warning Not supported compiler type
#endif
/**
* @}
*/
/**
* @}
*/
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _TAE32F53XX_H_ */
/************************* (C) COPYRIGHT Tai-Action *****END OF FILE***********/