rt-thread-official/bsp/acm32/acm32f4xx-nucleo/libraries/Device/ACM32F4.h

849 lines
28 KiB
C

/*
******************************************************************************
* @file ACM32F4.h
* @brief CMSIS ACM32F4 Device Peripheral Access Layer Header File.
*
* This file contains:
* - Data structures and the address mapping for all peripherals
* - Peripheral's registers declarations and bits definition
* - Macros to access peripheral¡¯s registers hardware
*
******************************************************************************
*/
#ifndef __ACM32F4_H__
#define __ACM32F4_H__
#ifdef __cplusplus
extern "C"
{
#endif
///*------------------- Interrupt Number Definition ----------------------*/
typedef enum IRQn
{
/* ---------------------------------- Cortex-M33 Processor Exceptions Numbers ----------------------------------- */
Reset_IRQn = -15, /* -15 Reset Vector, invoked on Power up and warm reset */
NonMaskableInt_IRQn = -14, /* -14 Non maskable Interrupt, cannot be stopped or preempted */
HardFault_IRQn = -13, /* -13 Hard Fault, all classes of Fault */
MemoryManagement_IRQn = -12, /* -12 Memory Management, MPU mismatch, including Access Violation
and No Match */
BusFault_IRQn = -11, /* -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory
related Fault */
UsageFault_IRQn = -10, /* -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */
SVCall_IRQn = -5, /* -5 System Service Call via SVC instruction */
DebugMonitor_IRQn = -4, /* -4 Debug Monitor */
PendSV_IRQn = -2, /* -2 Pendable request for system service */
SysTick_IRQn = -1, /* -1 System Tick Timer */
/* ------------------------------------- ARMCM0 Specific Interrupt Numbers -------------------------------------- */
WDT_IRQn = 0, /* 0: WDT_IRQHandler */
RTC_IRQn = 1, /* 1: RTC_IRQHandler */
EFC_IRQn = 2, /* 2: EFC_IRQHandler */
GPIOAB_IRQn = 3, /* 3: GPIOAB_IRQHandler */
GPIOCD_IRQn = 4, /* 4: GPIOCD_IRQHandler */
EXTI_IRQn = 5, /* 5: EXTI_IRQHandler */
SRAM_PARITY_IRQn = 6, /* 6: SRAM_PARITY_IRQHandler */
CLKRDY_IRQn = 7, /* 7: CLKRDY_IRQHandler */
UART4_IRQn = 8, /* 8: UART4_IRQHandler */
DMA_IRQn = 9, /* 9: DMA_IRQHandler */
UART3_IRQn = 10, /* 10: UART3_IRQHandler */
ADC_IRQn = 12, /* 12: ADC_IRQHandler */
TIM1_BRK_UP_TRG_COM_IRQn = 13, /* 13: TIM1_BRK_UP_TRG_COM_IRQHandler */
TIM1_CC_IRQn = 14, /* 14: TIM1_CC_IRQHandler */
TIM2_IRQn = 15, /* 15: TIM2_IRQHandler */
TIM3_IRQn = 16, /* 16: TIM3_IRQHandler */
TIM6_IRQn = 17, /* 17: TIM6_IRQHandler */
TIM7_IRQn = 18, /* 18: TIM7_IRQHandler */
TIM14_IRQn = 19, /* 19: TIM14_IRQHandler */
TIM15_IRQn = 20, /* 20: TIM15_IRQHandler */
TIM16_IRQn = 21, /* 21: TIM16_IRQHandler */
TIM17_IRQn = 22, /* 22: TIM17_IRQHandler */
I2C1_IRQn = 23, /* 23: I2C1_IRQHandler */
I2C2_IRQn = 24, /* 24: I2C2_IRQHandler */
SPI1_IRQn = 25, /* 25: SPI1_IRQHandler */
SPI2_IRQn = 26, /* 26: SPI2_IRQHandler */
UART1_IRQn = 27, /* 27: UART1_IRQHandler */
UART2_IRQn = 28, /* 28: UART2_IRQHandler */
LPUART_IRQn = 29, /* 29: LPUART_IRQHandler */
SPI3_IRQn = 30, /* 30: SPI3_IRQHandler */
AES_IRQn = 31, /* 31: AES_IRQHandler */
USB_IRQn = 32, /* 32: USB_IRQHandler */
DAC_IRQn = 33, /* 33: DAC_IRQHandler */
I2S_IRQn = 34, /* 34: I2S_IRQHandler */
GPIOEF_IRQ = 35, /* 35: GPIOEF_IRQHandler */
CAN1_IRQn = 36, /* 36: CAN1_IRQHandler */
CAN2_IRQn = 37, /* 37: CAN2_IRQHandler */
FPU_IRQn = 38, /* 38: FPU_IRQHandler */
TIM4_IRQn = 39, /* 39: TIM4_IRQHandler */
SPI4_IRQn = 40, /* 40: SPI4_IRQHandler */
} IRQn_Type;
/* ================================================================================ */
/* ================ Processor and Core Peripheral Section ================ */
/* ================================================================================ */
/* Configuration of the Cortex-M33 Processor and Core Peripherals */
#define __MPU_PRESENT 1 /*!< mcu does not provide a MPU present or not */
#define __NVIC_PRIO_BITS 3 /*!< mcu Supports 3 Bits for the Priority Levels */
#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */
#define ARM_MATH_CM4 1
#define __TARGET_FPU_VFP 1
#define __FPU_PRESENT 1
#define __DSP_PRESENT 1
#define __ARM_COMPAT_H 1
#define __ACCELERATE_PRESENT 1
#define __ACCELERATE_EH_PRESENT 0
#include "core_cm33.h" /* Processor and core peripherals */
#include "stdio.h"
#include "stdint.h"
#include "stdbool.h"
#include "string.h"
///*------------------- Bit Opertions ----------------------*/
#define BIT0 (1U << 0)
#define BIT1 (1U << 1)
#define BIT2 (1U << 2)
#define BIT3 (1U << 3)
#define BIT4 (1U << 4)
#define BIT5 (1U << 5)
#define BIT6 (1U << 6)
#define BIT7 (1U << 7)
#define BIT8 (1U << 8)
#define BIT9 (1U << 9)
#define BIT10 (1U << 10)
#define BIT11 (1U << 11)
#define BIT12 (1U << 12)
#define BIT13 (1U << 13)
#define BIT14 (1U << 14)
#define BIT15 (1U << 15)
#define BIT16 (1U << 16)
#define BIT17 (1U << 17)
#define BIT18 (1U << 18)
#define BIT19 (1U << 19)
#define BIT20 (1U << 20)
#define BIT21 (1U << 21)
#define BIT22 (1U << 22)
#define BIT23 (1U << 23)
#define BIT24 (1U << 24)
#define BIT25 (1U << 25)
#define BIT26 (1U << 26)
#define BIT27 (1U << 27)
#define BIT28 (1U << 28)
#define BIT29 (1U << 29)
#define BIT30 (1U << 30)
#define BIT31 (1U << 31)
/** @Addtogroup Peripheral_Registers_Structures
* @{
*/
///*------------------- FLASH Registers ----------------------*/
typedef struct
{
__IO uint32_t CTRL;
__IO uint32_t SEC;
__IO uint32_t ADCT;
__IO uint32_t TERASE;
__IO uint32_t TPROG;
__IO uint32_t STATUS;
__IO uint32_t INTSTATUS;
__IO uint32_t INTEN;
__IO uint32_t CONFIG;
__IO uint32_t EDCTRL;
__IO uint32_t RDN0;
__IO uint32_t RDN1;
__IO uint32_t RDN2;
__IO uint32_t RDN3;
__IO uint32_t TNVS;
__IO uint32_t TMODE_SEC;
__IO uint32_t TDOUT;
__IO uint32_t TDIN;
__IO uint32_t TCTRL;
}EFC_TypeDef;
///*------------------- Timer Registers ----------------------*/
typedef struct
{
__IO uint32_t CR1;
__IO uint32_t CR2;
__IO uint32_t SMCR;
__IO uint32_t DIER;
__IO uint32_t SR;
__IO uint32_t EGR;
__IO uint32_t CCMR1;
__IO uint32_t CCMR2;
__IO uint32_t CCER;
__IO uint32_t CNT;
__IO uint32_t PSC;
__IO uint32_t ARR;
__IO uint32_t RCR;
__IO uint32_t CCR1;
__IO uint32_t CCR2;
__IO uint32_t CCR3;
__IO uint32_t CCR4;
__IO uint32_t BDTR;
__IO uint32_t DCR;
__IO uint32_t DMAR;
__IO uint32_t RSV0[4];
__IO uint32_t AF1;
__IO uint32_t RSV1;
__IO uint32_t TISEL;
__IO uint32_t DBER;
}TIM_TypeDef;
///*------------------- RTC¡¢PMU Registers ----------------------*/
typedef struct
{
__IO uint32_t WP;
__IO uint32_t IE;
__IO uint32_t SR;
__IO uint32_t SEC;
__IO uint32_t MIN;
__IO uint32_t HOUR;
__IO uint32_t DATE;
__IO uint32_t WEEK;
__IO uint32_t MONTH;
__IO uint32_t YEAR;
__IO uint32_t ALM;
__IO uint32_t CR;
__IO uint32_t ADJUST;
__IO uint32_t RSV0[4];
__IO uint32_t CLKSTAMP1_TIME;
__IO uint32_t CALSTAMP1_DATE;
__IO uint32_t CLKSTAMP2_TIME;
__IO uint32_t CALSTAMP2_DATE;
__IO uint32_t RSV2[7];
__IO uint32_t BAKUP[5];
}RTC_TypeDef;
typedef struct
{
__IO uint32_t CR1;
__IO uint32_t SR;
__IO uint32_t IOSEL;
__IO uint32_t IOCR;
__IO uint32_t ANACR;
__IO uint32_t CR2;
}PMU_TypeDef;
///*------------------- WDT Registers ----------------------*/
typedef struct
{
__IO uint32_t LOAD;
__IO uint32_t COUNT;
__IO uint32_t CTRL;
__IO uint32_t FEED;
__IO uint32_t INTCLRTIME;
__IO uint32_t RIS;
}WDT_TypeDef;
///*------------------- IWDT Registers ----------------------*/
typedef struct
{
__IO uint32_t CMDR;
__IO uint32_t PR;
__IO uint32_t RLR;
__IO uint32_t SR;
__IO uint32_t WINR;
__IO uint32_t WUTR;
}IWDT_TypeDef;
///*------------------- UART Registers ----------------------*/
typedef struct
{
__IO uint32_t DR;
__IO uint32_t RSR;
__IO uint32_t RSV0[4];
__IO uint32_t FR;
__IO uint32_t RSV1;
__IO uint32_t ILPR;
__IO uint32_t IBRD;
__IO uint32_t FBRD;
__IO uint32_t LCRH;
__IO uint32_t CR;
__IO uint32_t IFLS;
__IO uint32_t IE;
__IO uint32_t RIS;
__IO uint32_t MIS;
__IO uint32_t ICR;
__IO uint32_t DMACR;
__IO uint32_t RSV2[2];
__IO uint32_t CR2;
__IO uint32_t BCNT;
}UART_TypeDef;
///*------------------- I2C Registers ----------------------*/
typedef struct
{
__IO uint32_t SLAVE_ADDR1;
__IO uint32_t CLK_DIV;
__IO uint32_t CR;
__IO uint32_t SR;
__IO uint32_t DR;
__IO uint32_t SLAVE_ADDR2_3;
__IO uint32_t RSV[3];
__IO uint32_t TIMEOUT;
}I2C_TypeDef;
///*------------------- CAN Registers ----------------------*/
typedef struct
{
__IO uint32_t ACR[4];
__IO uint32_t AMR[4];
__IO uint32_t RSV[5];
}Filter_typedef;
typedef union
{
__IO uint32_t DATABUF[13];
Filter_typedef FILTER;
}DF_typedef;
typedef struct
{
__IO uint32_t MOD;
__IO uint32_t CMR;
__IO uint32_t SR;
__IO uint32_t IR;
__IO uint32_t IER;
__IO uint32_t RSV0;
__IO uint32_t BTR0;
__IO uint32_t BTR1;
__IO uint32_t OCR;
__IO uint32_t RSV1;
__IO uint32_t RSV2;
__IO uint32_t ALC;
__IO uint32_t ECC;
__IO uint32_t EWLR;
__IO uint32_t RXERR;
__IO uint32_t TXERR;
__IO DF_typedef DF;
__IO uint32_t RMC;
__IO uint32_t RBSA;
__IO uint32_t CDR;
__IO uint32_t RXFIFO[64];
__IO uint32_t TXFIFO[13];
}CAN_TypeDef;
///*------------------- DAC Registers ----------------------*/
typedef struct
{
__IO uint32_t CR;
__IO uint32_t SWTRIGR;
__IO uint32_t DHR12R1;
__IO uint32_t DHR12L1;
__IO uint32_t DHR8R1;
__IO uint32_t DHR12R2;
__IO uint32_t DHR12L2;
__IO uint32_t DHR8R2;
__IO uint32_t DHR12RD;
__IO uint32_t DHR12LD;
__IO uint32_t DHR8RD;
__IO uint32_t DOR1;
__IO uint32_t DOR2;
__IO uint32_t SR;
__IO uint32_t CCR;
__IO uint32_t MCR;
__IO uint32_t SHSR1;
__IO uint32_t SHSR2;
__IO uint32_t SHHR;
__IO uint32_t SHRR;
}DAC_TypeDef;
///*------------------- LPUART Registers ----------------------*/
typedef struct
{
__IO uint32_t RXDR;
__IO uint32_t TXDR;
__IO uint32_t LCR;
__IO uint32_t CR;
__IO uint32_t IBAUD;
__IO uint32_t FBAUD;
__IO uint32_t IE;
__IO uint32_t SR;
__IO uint32_t ADDR;
}LPUART_TypeDef;
///*------------------- COMP Registers ----------------------*/
typedef struct
{
__IO uint32_t CR1;
__IO uint32_t CR2;
__IO uint32_t SR;
}COMP_TypeDef;
///*------------------- OPA Registers ----------------------*/
typedef struct
{
__IO uint32_t OPA1_CSR;
__IO uint32_t OPA2_CSR;
__IO uint32_t OPA3_CSR;
}OPA_TypeDef;
///*------------------- EXTI Registers ----------------------*/
typedef struct
{
__IO uint32_t IENR;
__IO uint32_t EENR;
__IO uint32_t RTENR;
__IO uint32_t FTENR;
__IO uint32_t SWIER;
__IO uint32_t PDR;
__IO uint32_t EXTICR1;
__IO uint32_t EXTICR2;
}EXTI_TypeDef;
///*------------------- SCU Registers ----------------------*/
typedef struct
{
__IO uint32_t RCR;
__IO uint32_t RSR;
__IO uint32_t IPRST2;
__IO uint32_t IPRST1;
__IO uint32_t CCR1;
__IO uint32_t CCR2;
__IO uint32_t CIR;
__IO uint32_t IPCKENR1;
__IO uint32_t IPCKENR2;
__IO uint32_t RCHCR;
__IO uint32_t XTHCR;
__IO uint32_t PLLCR;
__IO uint32_t LDOCR;
__IO uint32_t RSV0;
__IO uint32_t WMR;
__IO uint32_t CLKOCR;
__IO uint32_t VER;
__IO uint32_t SYSCFG1;
__IO uint32_t LVDCFG;
__IO uint32_t STOPCFG;
__IO uint32_t RSV1;
__IO uint32_t PHYCR;
__IO uint32_t MEMCFG;
__IO uint32_t DUMMY;
__IO uint32_t PASEL1;
__IO uint32_t PASEL2;
__IO uint32_t PBSEL1;
__IO uint32_t PBSEL2;
__IO uint32_t PABPUR;
__IO uint32_t PABPDR;
__IO uint32_t PASTR;
__IO uint32_t PBSTR;
__IO uint32_t PABSMTR;
__IO uint32_t PABODR;
__IO uint32_t PABADS;
__IO uint32_t RSV2;
__IO uint32_t PCSEL1;
__IO uint32_t PCSEL2;
__IO uint32_t PDSEL1;
__IO uint32_t PDSEL2;
__IO uint32_t PCDPUR;
__IO uint32_t PCDPDR;
__IO uint32_t PCSTR;
__IO uint32_t PDSTR;
__IO uint32_t PCDSMTR;
__IO uint32_t PCDODR;
__IO uint32_t PCDADS;
__IO uint32_t RSV3;
__IO uint32_t PESEL1;
__IO uint32_t PESEL2;
__IO uint32_t PFSEL1;
__IO uint32_t RSV4;
__IO uint32_t PEFPUR;
__IO uint32_t PEFPDR;
__IO uint32_t PESTR;
__IO uint32_t PFSTR;
__IO uint32_t PEFSMTR;
__IO uint32_t PEFODR;
__IO uint32_t PEFADS;
}SCU_TypeDef;
///*------------------- CRC Registers ----------------------*/
typedef struct
{
__IO uint32_t DATA;
__IO uint32_t CTRL;
__IO uint32_t INIT;
__IO uint32_t RSV0;
__IO uint32_t OUTXOR;
__IO uint32_t POLY;
__IO uint32_t FDATA;
}CRC_TypeDef;
///*------------------- ADC Registers ----------------------*/
typedef struct
{
__IO uint32_t SR;
__IO uint32_t IE;
__IO uint32_t CR1;
__IO uint32_t CR2;
__IO uint32_t SMPR1;
__IO uint32_t SMPR2;
__IO uint32_t HTR;
__IO uint32_t LTR;
__IO uint32_t SQR1;
__IO uint32_t SQR2;
__IO uint32_t SQR3;
__IO uint32_t JSQR;
__IO uint32_t JDR;
__IO uint32_t DR;
__IO uint32_t DIFF;
__IO uint32_t SIGN;
__IO uint32_t TSREF;
__IO uint32_t SMPR3;
}ADC_TypeDef;
///*------------------- I2S Registers ----------------------*/
typedef struct
{
__IO uint32_t DAT;
__IO uint32_t CTL;
__IO uint32_t PSC;
__IO uint32_t IE;
__IO uint32_t STATUS;
}I2S_TypeDef;
///*------------------- GPIO Registers ----------------------*/
typedef struct
{
__IO uint32_t DIR;
__IO uint32_t RSV0;
__IO uint32_t SET;
__IO uint32_t CLR;
__IO uint32_t ODATA;
__IO uint32_t IDATA;
__IO uint32_t IEN;
__IO uint32_t IS;
__IO uint32_t IBE;
__IO uint32_t IEV;
__IO uint32_t IC;
__IO uint32_t RIS;
__IO uint32_t MIS;
}GPIO_TypeDef;
///*------------------- SPI Registers ----------------------*/
typedef struct
{
__IO uint32_t DAT;
__IO uint32_t BAUD;
__IO uint32_t CTL;
__IO uint32_t TX_CTL;
__IO uint32_t RX_CTL;
__IO uint32_t IE;
__IO uint32_t STATUS;
__IO uint32_t TX_DELAY;
__IO uint32_t BATCH;
__IO uint32_t CS;
__IO uint32_t OUT_EN;
__IO uint32_t MEMO_ACC;
__IO uint32_t CMD;
__IO uint32_t PARA;
}SPI_TypeDef;
///*------------------- DMA Registers ----------------------*/
typedef struct
{
__IO uint32_t INT_STATUS;
__IO uint32_t INT_TC_STATUS;
__IO uint32_t INT_TC_CLR;
__IO uint32_t INT_ERR_STATUS;
__IO uint32_t INT_ERR_CLR;
__IO uint32_t RAW_INT_TC_STATUS;
__IO uint32_t RAW_INT_ERR_STATUS;
__IO uint32_t EN_CH_STATUS;
__IO uint32_t RSV0[4];
__IO uint32_t CONFIG;
__IO uint32_t SYNCLO;
__IO uint32_t SYNCHI;
}DMA_TypeDef;
typedef struct
{
__IO uint32_t SRC_ADDR;
__IO uint32_t DEST_ADDR;
__IO uint32_t LLI;
__IO uint32_t CTRL;
__IO uint32_t CONFIG;
}DMA_Channel_TypeDef;
///*------------------- AES Registers ----------------------*/
typedef struct
{
__IO uint32_t DATAIN;
__IO uint32_t KEYIN;
__IO uint32_t RSV0;
__IO uint32_t CONTROL;
__IO uint32_t STATE;
__IO uint32_t DATAOUT;
}AES_TypeDef;
///*------------------- FAU Registers ----------------------*/
typedef struct
{
__IO uint32_t CTRL1; //0x00
__IO uint32_t STAUTS; //0x04
__IO uint32_t CORDIC_X_DATAIN; //0x08
__IO uint32_t CORDIC_Y_DATAIN; //0x0c
__IO uint32_t RESULT1; //0x10
__IO uint32_t RESULT2; //0x14
}FAU_TypeDef;
///*------------------- HRNG Registers ----------------------*/
typedef struct
{
__IO uint32_t CTRL;
__IO uint32_t LFSR;
}HRNG_TypeDef;
///*------------------- HASH Registers ----------------------*/
typedef struct
{
__IO uint32_t DATAIN;
__IO uint32_t MIDDATA;
__IO uint32_t CTRL;
__IO uint32_t DATAOUT;
}HASH_TypeDef;
///*------------------- USB Registers ----------------------*/
typedef struct
{
__IO uint32_t WORKING_MODE;
__IO uint32_t EPxCSR[5];
__IO uint32_t USB_ADDR;
__IO uint32_t SETIP_0_3_DATA;
__IO uint32_t SETIP_4_7_DATA;
__IO uint32_t EPADDR_CFG;
__IO uint32_t CURRENT_PID;
__IO uint32_t CURRENT_FRAME_NUMBER;
__IO uint32_t CRC_ERROR_CNT;
__IO uint32_t USB_STATUS_DETECT_CNT;
__IO uint32_t RSV0;
__IO uint32_t RSV1;
__IO uint32_t EPxSENDBN[5];
}USB_CTRLTypeDef;
///*------------------- USB interrupt access Registers ----------------------*/
typedef struct
{
__IO uint32_t INT_STAT_RAW;
__IO uint32_t INT_EN;
__IO uint32_t RSV;
__IO uint32_t INT_CLR;
}USB_INTTypeDef;
/**
* @}
*/
/** @addtogroup Peripheral_memory_map
* @{
*/
///*------------------- Peripheral memory map ----------------------*/
#define EFLASH_BASE (0x00000000UL)
#define SRAM_BASE (0x20000000UL)
#define PERIPH_BASE (0x40000000UL)
#define QSPI_BASE (0x90000000UL)
#define APB1PERIPH_BASE (PERIPH_BASE)
#define APB2PERIPH_BASE (PERIPH_BASE + 0x00010000UL)
#define AHBPERIPH_BASE (PERIPH_BASE + 0x00020000UL)
///*---------------------- EFC peripherals ------------------------*/
#define EFLASH_REG_BASE (EFLASH_BASE + 0x00100000)
///*---------------------- APB1 peripherals ------------------------*/
#define TIM2_BASE (APB1PERIPH_BASE + 0x00000000UL)
#define TIM3_BASE (APB1PERIPH_BASE + 0x00000400UL)
#define TIM4_BASE (APB1PERIPH_BASE + 0x00000800UL)
#define TIM6_BASE (APB1PERIPH_BASE + 0x00001000UL)
#define TIM7_BASE (APB1PERIPH_BASE + 0x00001400UL)
#define TIM14_BASE (APB1PERIPH_BASE + 0x00002000UL)
#define PMU_BASE (APB1PERIPH_BASE + 0x00002400UL)
#define RTC_BASE (APB1PERIPH_BASE + 0x00002800UL)
#define WDT_BASE (APB1PERIPH_BASE + 0x00002C00UL)
#define IWDT_BASE (APB1PERIPH_BASE + 0x00003000UL)
#define UART2_BASE (APB1PERIPH_BASE + 0x00004400UL)
#define UART3_BASE (APB1PERIPH_BASE + 0x00004800UL)
#define UART4_BASE (APB1PERIPH_BASE + 0x00004C00UL)
#define I2C1_BASE (APB1PERIPH_BASE + 0x00005400UL)
#define I2C2_BASE (APB1PERIPH_BASE + 0x00005800UL)
#define CAN1_BASE (APB1PERIPH_BASE + 0x00006400UL)
#define CAN2_BASE (APB1PERIPH_BASE + 0x00006800UL)
#define DAC_BASE (APB1PERIPH_BASE + 0x00007400UL)
#define LPUART_BASE (APB1PERIPH_BASE + 0x00008000UL)
///*---------------------- APB2 peripherals ------------------------*/
#define COMP_BASE (APB2PERIPH_BASE + 0x00000200UL)
#define OPA_BASE (APB2PERIPH_BASE + 0x00000300UL)
#define EXTI_BASE (APB2PERIPH_BASE + 0x00000400UL)
#define SCU_BASE (APB2PERIPH_BASE + 0x00000800UL)
#define CRC_BASE (APB2PERIPH_BASE + 0x00000C00UL)
#define ADC_BASE (APB2PERIPH_BASE + 0x00002400UL)
#define TIM1_BASE (APB2PERIPH_BASE + 0x00002C00UL)
#define I2S1_BASE (APB2PERIPH_BASE + 0x00003000UL)
#define UART1_BASE (APB2PERIPH_BASE + 0x00003800UL)
#define TIM15_BASE (APB2PERIPH_BASE + 0x00004000UL)
#define TIM16_BASE (APB2PERIPH_BASE + 0x00004400UL)
#define TIM17_BASE (APB2PERIPH_BASE + 0x00004800UL)
#define GPIOAB_BASE (APB2PERIPH_BASE + 0x0000F000UL)
#define GPIOCD_BASE (APB2PERIPH_BASE + 0x0000F400UL)
#define GPIOEF_BASE (APB2PERIPH_BASE + 0x0000F800UL)
///*---------------------- AHB peripherals ------------------------*/
#define SPI1_BASE (AHBPERIPH_BASE)
#define SPI2_BASE (AHBPERIPH_BASE + 0x00000400UL)
#define SPI3_BASE (AHBPERIPH_BASE + 0x00000800UL)
#define SPI4_BASE (AHBPERIPH_BASE + 0x00000C00UL)
#define DMA_BASE (AHBPERIPH_BASE + 0x00001000UL)
#define DMA_Channel0_BASE (AHBPERIPH_BASE + 0x00001100UL)
#define DMA_Channel1_BASE (AHBPERIPH_BASE + 0x00001120UL)
#define DMA_Channel2_BASE (AHBPERIPH_BASE + 0x00001140UL)
#define DMA_Channel3_BASE (AHBPERIPH_BASE + 0x00001160UL)
#define DMA_Channel4_BASE (AHBPERIPH_BASE + 0x00001180UL)
#define DMA_Channel5_BASE (AHBPERIPH_BASE + 0x000011A0UL)
#define DMA_Channel6_BASE (AHBPERIPH_BASE + 0x000011C0UL)
#define DMA_Channel7_BASE (AHBPERIPH_BASE + 0x000011E0UL)
#define AES_BASE (AHBPERIPH_BASE + 0x00010000UL)
#define FAU_BASE (AHBPERIPH_BASE + 0x00010400UL)
#define HRNG_BASE (AHBPERIPH_BASE + 0x00010800UL)
#define HASH_BASE (AHBPERIPH_BASE + 0x00010C00UL)
#define USB_BASE (AHBPERIPH_BASE + 0x00020000UL)
///*---------------------- QSPI Memory ------------------------*/
#define QSPI3_BASE (QSPI_BASE)
/**
* @}
*/
/** @addtogroup Peripheral_declaration
* @{
*/
#define EFC ((EFC_TypeDef *)EFLASH_REG_BASE)
#define TIM2 ((TIM_TypeDef *)TIM2_BASE)
#define TIM3 ((TIM_TypeDef *)TIM3_BASE)
#define TIM4 ((TIM_TypeDef *)TIM4_BASE)
#define TIM6 ((TIM_TypeDef *)TIM6_BASE)
#define TIM7 ((TIM_TypeDef *)TIM7_BASE)
#define TIM14 ((TIM_TypeDef *)TIM14_BASE)
#define PMU ((PMU_TypeDef *)PMU_BASE)
#define RTC ((RTC_TypeDef *)RTC_BASE)
#define WDT ((WDT_TypeDef *)WDT_BASE)
#define IWDT ((IWDT_TypeDef *)IWDT_BASE)
#define UART2 ((UART_TypeDef *)UART2_BASE)
#define UART3 ((UART_TypeDef *)UART3_BASE)
#define UART4 ((UART_TypeDef *)UART4_BASE)
#define I2C1 ((I2C_TypeDef *)I2C1_BASE)
#define I2C2 ((I2C_TypeDef *)I2C2_BASE)
#define CAN1 ((CAN_TypeDef *)CAN1_BASE)
#define CAN2 ((CAN_TypeDef *)CAN2_BASE)
#define DAC ((DAC_TypeDef *)DAC_BASE)
#define LPUART ((LPUART_TypeDef *)LPUART_BASE)
#define COMP ((COMP_TypeDef *)COMP_BASE)
#define OPA ((OPA_TypeDef *)OPA_BASE)
#define EXTI ((EXTI_TypeDef *)EXTI_BASE)
#define SCU ((SCU_TypeDef *)SCU_BASE)
#define CRC ((CRC_TypeDef *)CRC_BASE)
#define ADC ((ADC_TypeDef *)ADC_BASE)
#define TIM1 ((TIM_TypeDef *)TIM1_BASE)
#define I2S1 ((I2S_TypeDef *)I2S1_BASE)
#define UART1 ((UART_TypeDef *)UART1_BASE)
#define TIM15 ((TIM_TypeDef *)TIM15_BASE)
#define TIM16 ((TIM_TypeDef *)TIM16_BASE)
#define TIM17 ((TIM_TypeDef *)TIM17_BASE)
#define GPIOAB ((GPIO_TypeDef *)GPIOAB_BASE)
#define GPIOCD ((GPIO_TypeDef *)GPIOCD_BASE)
#define GPIOEF ((GPIO_TypeDef *)GPIOEF_BASE)
#define SPI1 ((SPI_TypeDef *)SPI1_BASE)
#define SPI2 ((SPI_TypeDef *)SPI2_BASE)
#define SPI3 ((SPI_TypeDef *)SPI3_BASE)
#define SPI4 ((SPI_TypeDef *)SPI4_BASE)
#define DMA ((DMA_TypeDef *)DMA_BASE)
#define DMA_Channel0 ((DMA_Channel_TypeDef *)DMA_Channel0_BASE)
#define DMA_Channel1 ((DMA_Channel_TypeDef *)DMA_Channel1_BASE)
#define DMA_Channel2 ((DMA_Channel_TypeDef *)DMA_Channel2_BASE)
#define DMA_Channel3 ((DMA_Channel_TypeDef *)DMA_Channel3_BASE)
#define DMA_Channel4 ((DMA_Channel_TypeDef *)DMA_Channel4_BASE)
#define DMA_Channel5 ((DMA_Channel_TypeDef *)DMA_Channel5_BASE)
#define DMA_Channel6 ((DMA_Channel_TypeDef *)DMA_Channel6_BASE)
#define DMA_Channel7 ((DMA_Channel_TypeDef *)DMA_Channel7_BASE)
#define AES ((AES_TypeDef *)AES_BASE)
#define FAU ((FAU_TypeDef *)FAU_BASE)
#define HRNG ((HRNG_TypeDef *)HRNG_BASE)
#define HASH ((HASH_TypeDef *)HASH_BASE)
#define USBCTRL ((USB_CTRLTypeDef *)USB_BASE)
#define USBINT ((USB_INTTypeDef *)(USB_BASE+0xFFE4))
/**
* @}
*/
/** @addtogroup Exported_macros
* @{
*/
#define SET_BIT(REG, BIT) ((REG) |= (BIT))
#define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT))
#define READ_BIT(REG, BIT) ((REG) & (BIT))
#define CLEAR_REG(REG) ((REG) = (0x0))
#define WRITE_REG(REG, VAL) ((REG) = (VAL))
#define READ_REG(REG) ((REG))
#define MODIFY_REG(REG,MASK,BITS) ((REG) = (((REG)&(~(MASK)))|((BITS)&(MASK))))
typedef signed char INT8;
typedef signed short int INT16;
typedef signed int INT32;
/* exact-width unsigned integer types */
typedef unsigned char UINT8;
typedef unsigned short int UINT16;
typedef unsigned int UINT32;
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif /* ACM32F4_H */