/* * Copyright (c) 2022 OpenLuat & AirM2M * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of * the Software, and to permit persons to whom the Software is furnished to do so, * subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef __AIR105_H__ #define __AIR105_H__ #ifdef __cplusplus extern "C" { #endif /* ToDo: replace '' with your device name; add your doxyGen comment */ /** @addtogroup _Definitions Definitions This file defines all structures and symbols for : - registers and bitfields - peripheral base address - peripheral ID - Peripheral definitions @{ */ /******************************************************************************/ /* Processor and Core Peripherals */ /******************************************************************************/ /** @addtogroup _CMSIS Device CMSIS Definitions Configuration of the Cortex-M# Processor and Core Peripherals @{ */ /* * ========================================================================== * ---------- Interrupt Number Definition ----------------------------------- * ========================================================================== */ typedef enum IRQn { /****** Cortex-M# Processor Exceptions Numbers ***************************************************/ /* ToDo: use this Cortex interrupt numbers if your device is a CORTEX-M3 / Cortex-M4 device */ NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable 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 */ /****** Device Specific Interrupt Numbers ********************************************************/ /* ToDo: add here your device specific external interrupt numbers according the interrupt handlers defined in startup_Device.s eg.: Interrupt for Timer#1 TIM1_IRQHandler -> TIM1_IRQn */ DMA_IRQn = 0, USB_IRQn = 1, USBDMA_IRQn = 2, LCD_IRQn = 3, SCI0_IRQn = 4, UART0_IRQn = 5, UART1_IRQn = 6, SPI0_IRQn = 7, CRYPT0_IRQn = 8, TIM0_0_IRQn = 9, TIM0_1_IRQn = 10, TIM0_2_IRQn = 11, TIM0_3_IRQn = 12, EXTI0_IRQn = 13, EXTI1_IRQn = 14, EXTI2_IRQn = 15, RTC_IRQn = 16, SENSOR_IRQn = 17, TRNG_IRQn = 18, ADC0_IRQn = 19, SSC_IRQn = 20, TIM0_4_IRQn = 21, TIM0_5_IRQn = 22, KBD_IRQn = 23, MSR_IRQn = 24, EXTI3_IRQn = 25, SPI1_IRQn = 26, SPI2_IRQn = 27, SCI2_IRQn = 29, UART2_IRQn = 32, UART3_IRQn = 33, QSPI_IRQn = 35, I2C0_IRQn = 36, EXTI4_IRQn = 37, EXTI5_IRQn = 38, TIM0_6_IRQn = 39, TIM0_7_IRQn = 40, DCMI_IRQn = 42, QR_IRQn = 46, GPU_IRQn = 47, AWD_IRQn = 49, DAC_IRQn = 50, SPI5_IRQn = 51 } IRQn_Type; /* * ========================================================================== * ----------- Processor and Core Peripheral Section ------------------------ * ========================================================================== */ /* Configuration of the Cortex-M# Processor and Core Peripherals */ /* ToDo: set the defines according your Device */ /* ToDo: define the correct core revision __CM0_REV if your device is a CORTEX-M0 device __CM3_REV if your device is a CORTEX-M3 device __CM4_REV if your device is a CORTEX-M4 device */ //#define __CM3_REV 0x0201 /*!< Core Revision r2p1 */ //#define __CM3_REV 0x0200 /*!< Core Revision r2p0 */ #define __CM4_REV 0x0001 /*!< Core Revision r2p0 */ #define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ #define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ #define __MPU_PRESENT 1 /*!< MPU present or not */ /* ToDo: define __FPU_PRESENT if your devise is a CORTEX-M4 */ #define __FPU_PRESENT 1 /*!< FPU present or not */ /*@}*/ /* end of group _CMSIS */ /* ToDo: include the correct core_cm#.h file core_cm0.h if your device is a CORTEX-M0 device core_cm3.h if your device is a CORTEX-M3 device core_cm4.h if your device is a CORTEX-M4 device */ #include "core_cm4.h" /* Cortex-M# processor and core peripherals */ /* ToDo: include your system_.h file replace '' with your device name */ #include "system_air105.h" /* System include file */ /******************************************************************************/ /* Device Specific Peripheral registers structures */ /******************************************************************************/ /** @addtogroup _Peripherals Peripherals Device Specific Peripheral registers structures @{ */ #if defined ( __CC_ARM ) #pragma anon_unions #endif #include /** @addtogroup Exported_types * @{ */ typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus; typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; #define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE)) typedef enum {FALSE = 0, TRUE = !FALSE} Boolean; typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; /* ToDo: add here your device specific peripheral access structure typedefs following is an example for a timer */ #define BIT0 (0x00000001U) #define BIT1 (0x00000002U) #define BIT2 (0x00000004U) #define BIT3 (0x00000008U) #define BIT4 (0x00000010U) #define BIT5 (0x00000020U) #define BIT6 (0x00000040U) #define BIT7 (0x00000080U) #define BIT8 (0x00000100U) #define BIT9 (0x00000200U) #define BIT10 (0x00000400U) #define BIT11 (0x00000800U) #define BIT12 (0x00001000U) #define BIT13 (0x00002000U) #define BIT14 (0x00004000U) #define BIT15 (0x00008000U) #define BIT16 (0x00010000U) #define BIT17 (0x00020000U) #define BIT18 (0x00040000U) #define BIT19 (0x00080000U) #define BIT20 (0x00100000U) #define BIT21 (0x00200000U) #define BIT22 (0x00400000U) #define BIT23 (0x00800000U) #define BIT24 (0x01000000U) #define BIT25 (0x02000000U) #define BIT26 (0x04000000U) #define BIT27 (0x08000000U) #define BIT28 (0x10000000U) #define BIT29 (0x20000000U) #define BIT30 (0x40000000U) #define BIT31 (0x80000000U) #define BIT(n) (1UL << (n)) typedef struct { __IO uint32_t FREQ_SEL; __IO uint32_t CG_CTRL1; __IO uint32_t CG_CTRL2; __O uint32_t SOFT_RST1; __O uint32_t SOFT_RST2; __IO uint32_t LOCK_R; __IO uint32_t PHER_CTRL; __I uint32_t SYS_RSVD[(0x2C-0x1C) >> 2]; __I uint32_t HCLK_1MS_VAL; __I uint32_t PCLK_1MS_VAL; __IO uint32_t ANA_CTRL; __IO uint32_t DMA_CHAN; __IO uint32_t SCI0_GLF; __IO uint32_t SW_RSV1; __IO uint32_t SW_RSV2; __IO uint32_t CARD_RSVD; __IO uint32_t LDO25_CR; __IO uint32_t DMA_CHAN1; __I uint32_t SYS_RSVD2[(0x100-0x54) >> 2]; __IO uint32_t MSR_CR1; __IO uint32_t MSR_CR2; __IO uint32_t USBPHY_CR1; __IO uint32_t USBPHY_CR2; __IO uint32_t USBPHY_CR3; __IO uint32_t ISO7816_CR; __IO uint32_t LDO_CR; __IO uint32_t CHG_CSR; __I uint32_t SYS_RSVD3[(0x204-0x120) >> 2]; __IO uint32_t RSVD_POR; __I uint32_t SYS_RSVD4[(0x3EC-0x208) >> 2]; __IO uint32_t PM2_WK_FLAG; __IO uint32_t CALIB_CSR; __IO uint32_t DBG_CR; __IO uint32_t CHIP_ID; } SYSCTRL_TypeDef; typedef struct { union { __I uint32_t RBR; __O uint32_t THR; __IO uint32_t DLL; } OFFSET_0; union { __IO uint32_t DLH; __IO uint32_t IER; } OFFSET_4; union { __I uint32_t IIR; __O uint32_t FCR; } OFFSET_8; __IO uint32_t LCR; __IO uint32_t MCR; __I uint32_t LSR; __I uint32_t MSR; __IO uint32_t SCR; __IO uint32_t LPDLL; __IO uint32_t LPDLH; __I uint32_t RES0[2]; union { __I uint32_t SRBR[16]; __O uint32_t STHR[16]; } OFFSET_48; __IO uint32_t FAR; __I uint32_t TFR; __O uint32_t RFW; __I uint32_t USR; __I uint32_t TFL; __I uint32_t RFL; __O uint32_t SRR; __IO uint32_t SRTS; __IO uint32_t SBCR; __IO uint32_t SDMAM; __IO uint32_t SFE; __IO uint32_t SRT; __IO uint32_t STET; __IO uint32_t HTX; __O uint32_t DMASA; __I uint32_t RES1[18]; __I uint32_t CPR; __I uint32_t UCV; __I uint32_t CTR; } UART_TypeDef; typedef struct { __IO uint16_t CTRLR0; uint16_t RESERVED0; __IO uint16_t CTRLR1; uint16_t RESERVED1; __IO uint32_t SSIENR; __IO uint32_t MWCR; __IO uint32_t SER; __IO uint32_t BAUDR; __IO uint32_t TXFTLR; __IO uint32_t RXFTLR; __I uint32_t TXFLR; __I uint32_t RXFLR; __I uint32_t SR; __IO uint32_t IMR; __I uint32_t ISR; __I uint32_t RISR; __I uint32_t TXOICR; __I uint32_t RXOICR; __I uint32_t RXUICR; __I uint32_t MSTICR; __IO uint32_t ICR; __IO uint32_t DMACR; __IO uint32_t DMATDLR; __IO uint32_t DMARDLR; __I uint32_t IDR; __I uint32_t SSI_COMP_VERSION; __IO uint32_t DR; __IO uint32_t DR_Array[35]; __IO uint32_t RX_SAMPLE_DLY; } SPI_TypeDef; typedef struct { __IO uint32_t FCU_CMD; __O uint32_t ADDRES; __IO uint32_t BYTE_NUM; __O uint32_t WR_FIFO; __I uint32_t RD_FIFO; __IO uint32_t DEVICE_PARA; __IO uint32_t REG_WDATA; __O uint32_t REG_RDATA; __IO uint32_t INT_MASK; __IO uint32_t INT_UMASK; __IO uint32_t INT_MASK_STATUS; __IO uint32_t INT_STATUS; __IO uint32_t INT_RAWSTATUS; __IO uint32_t INT_CLEAR; __IO uint32_t CACHE_INTF_CMD; __IO uint32_t DMA_CNTL; __IO uint32_t FIFO_CNTL; } QSPI_TypeDef; typedef struct { __IO uint32_t CACHE_I0; __IO uint32_t CACHE_I1; __IO uint32_t CACHE_I2; __IO uint32_t CACHE_I3; __IO uint32_t CACHE_K0; __IO uint32_t CACHE_K1; __IO uint32_t CACHE_K2; __IO uint32_t CACHE_K3; __IO uint32_t CACHE_CS; __IO uint32_t CACHE_REF; __I uint32_t CACHE_RSVD0[(0x40-0x28) >> 2]; __IO uint32_t CACHE_CONFIG; __I uint32_t CACHE_RSVD1[(0x74-0x44) >> 2]; __IO uint32_t CACHE_SADDR; __IO uint32_t CACHE_EADDR; } CACHE_TypeDef; typedef struct { __IO uint32_t CR0; /*!< HSPIM Control register0 */ __IO uint32_t FLCR; /*!< HSPIM Flow Control register */ __IO uint32_t FLSR; /*!< HSPIM Flow Status register */ __IO uint32_t FCR; /*!< HSPIM FIFO Control register */ __I uint32_t RDR; /*!< HSPIM Read Data register */ __O uint32_t WDR; /*!< HSPIM Write Data register */ __I uint32_t SR; /*!< HSPIM Status register */ __IO uint32_t CR1; /*!< HSPIM Control register1 */ __IO uint32_t FSR; /*!< HSPIM FIFO Status register */ __IO uint32_t DCR; /*!< HSPIM DMA Control register */ __I uint32_t TISR; /*!< HSPIM TX Interrput Status register */ __I uint32_t RISR; /*!< HSPIM RX Interrput Status register */ }HSPIM_TypeDef; typedef struct { __IO uint32_t SMU_CTRL; __IO uint32_t FPM_CTRL; __O uint32_t INTR_STAT; __IO uint32_t INTR_CTRL; __IO uint32_t RESERVED1[12]; __IO uint32_t SMU_OP1; __IO uint32_t SMU_OP2; __O uint32_t SMU_RES; __IO uint32_t RESERVED2[13]; __IO float MATRIX1_00; __IO float MATRIX1_01; __IO float MATRIX1_02; __IO float MATRIX1_10; __IO float MATRIX1_11; __IO float MATRIX1_12; __IO float MATRIX1_20; __IO float MATRIX1_21; __IO float MATRIX1_22; __IO uint32_t RESERVED3[7]; __IO float MATRIX2_00; __IO float MATRIX2_01; __IO float MATRIX2_02; __IO uint32_t RESERVED4[13]; __IO uint32_t TABLE1_LEN; __IO uint32_t TABLE2_LEN; __IO uint32_t ACC; __IO uint32_t POSITION; __IO uint32_t VAL3; __IO uint32_t RESERVED5[443]; __IO uint32_t TABLE1_RAM; __IO uint32_t RESERVED6[255]; __IO uint32_t TABLE2_RAM; __IO uint32_t RESERVED7[63]; }QRCODE_TypeDef; typedef struct { __IO uint32_t WDT_CR; __IO uint32_t RESERVED0; __I uint32_t WDT_CCVR; __O uint32_t WDT_CRR; __I uint32_t WDT_STAT; __I uint32_t WDT_EOI; __I uint32_t RESERVED1; __IO uint32_t WDT_RLD; __I uint32_t RESERVED[53]; __I uint32_t WDT_COMP_PARAMS_1; __I uint32_t WDT_COMP_VERSION; __I uint32_t WDT_COMP_TYPE; } WDT_TypeDef; typedef struct { __IO uint32_t CRC_CSR; __O uint32_t CRC_INI; union { __I uint32_t DOUT; __O uint8_t DIN; } CRC_DATA; } CRC_TypeDef; typedef struct { __IO uint32_t LoadCount; __I uint32_t CurrentValue; __IO uint32_t ControlReg; __IO uint32_t EOI; __I uint32_t IntStatus; } TIM_TypeDef; #define TIM_NUM 8 typedef struct { TIM_TypeDef TIM[TIM_NUM]; __I uint32_t TIM_IntStatus; __I uint32_t TIM_EOI; __I uint32_t TIM_RawIntStatus; __I uint32_t TIM_Comp; __IO uint32_t TIM_ReloadCount[TIM_NUM]; } TIM_Module_TypeDef; typedef struct { __IO uint32_t ADC_CR1; __I uint32_t ADC_SR; __IO uint32_t ADC_FIFO; __I uint32_t ADC_DATA; __I uint32_t ADC_FIFO_FL; __IO uint32_t ADC_FIFO_THR; __IO uint32_t ADC_CR2; } ADC_TypeDef; typedef struct { __IO uint32_t DAC_CR1; __IO uint32_t DAC_DATA; __IO uint32_t DAC_TIMER; __I uint32_t DAC_FIFO_FL; __IO uint32_t DAC_FIFO_THR; } DAC_TypeDef; typedef struct { __IO uint32_t AWD_CR1; __IO uint32_t AWD_CR2; __I uint32_t AWD_SR; } AWD_TypeDef; typedef struct { __IO uint32_t IODR; __IO uint32_t BSRR; __IO uint32_t OEN; __IO uint32_t PUE; } GPIO_TypeDef; typedef struct { __IO uint32_t INTP_TYPE; __IO uint32_t INTP_STA; } GPIO_INTP_TypeDef; #define GPIO_GROUP_NUM 6 typedef struct { GPIO_TypeDef GPIO[GPIO_GROUP_NUM]; __I uint32_t RSVD0[(0x114 - 0x060)>>2]; __I uint32_t INTP[GPIO_GROUP_NUM]; __I uint32_t RSVD1[(0x180 - 0x12C)>>2]; __IO uint32_t ALT[GPIO_GROUP_NUM]; __I uint32_t RSVD2[(0x200 - 0x198)>>2]; __IO uint32_t SYS_CR1; __I uint32_t RSVD3[(0x220 - 0x204)>>2]; __IO uint32_t WAKE_TYPE_EN; __IO uint32_t WAKE_P0_EN; __IO uint32_t WAKE_P1_EN; __IO uint32_t WAKE_P2_EN; __IO uint32_t WAKE_P3_EN; __I uint32_t RSVD5[(0x800 - 0x234)>>2]; GPIO_INTP_TypeDef INTP_TYPE_STA[GPIO_GROUP_NUM]; } GPIO_MODULE_TypeDef; typedef struct { __IO uint32_t FLAG[(0x0174 - 0x00164) >> 2]; } FLAG_TypeDef; #define BPK_KEY_NUM 16 typedef struct { __IO uint32_t KEY[BPK_KEY_NUM]; __I uint32_t BPK_RSVD0[(0x80-0x40)>>2]; __IO uint32_t BPK_RDY; __IO uint32_t BPK_CLR; __IO uint32_t BPK_LRA; __IO uint32_t BPK_LWA; __I uint32_t BPK_RSVD1; __IO uint32_t BPK_LR; __IO uint32_t BPK_SCR; __IO uint32_t BPK_POWER; __IO uint32_t RTC_CS; __IO uint32_t RTC_REF; __IO uint32_t RTC_ARM; __I uint32_t RTC_TIM; __O uint32_t RTC_INTCLR; __IO uint32_t OSC32K_CR; __IO uint32_t RTC_ATTA_TIM; __IO uint32_t BPK_RR; __IO uint32_t SEN_EXT_TYPE; __IO uint32_t SEN_EXT_CFG; __IO uint32_t SEN_SOFT_EN; __IO uint32_t SEN_STATE; __IO uint32_t SEN_BRIDGE; __IO uint32_t SEN_SOFT_ATTACK; __IO uint32_t SEN_SOFT_LOCK; __IO uint32_t SEN_ATTACK_CNT; __IO uint32_t SEN_ATTACK_TYP; __IO uint32_t SEN_VG_DETECT; __IO uint32_t SEN_RNG_INI; __IO uint32_t RESERVED3[(0x0104 - 0x00EC) >> 2]; __IO uint32_t SEN_EN[19]; __IO uint32_t SEN_EXTS_START; __IO uint32_t SEN_LOCK; __IO uint32_t SEN_ANA0; __IO uint32_t SEN_ANA1; __IO uint32_t SEN_ATTCLR; FLAG_TypeDef SEN_FLAG; __IO uint32_t SEN_DEBUG; __I uint32_t BPU_RSVD4[(0x200- 0x178) >> 2]; __IO uint32_t BPK_RAM[(0x600-0x200) >> 2]; } BPU_TypeDef; typedef struct { __IO uint32_t KEY[BPK_KEY_NUM]; __I uint32_t BPK_RSVD0[(0x80-0x40) >> 2]; __IO uint32_t BPK_RDY; __IO uint32_t BPK_CLR; __IO uint32_t BPK_LRA; __IO uint32_t BPK_LWA; __I uint32_t BPK_RSVD1; __IO uint32_t BPK_LR; __IO uint32_t BPK_SCR; __IO uint32_t BPK_POWER; } BPK_TypeDef; typedef struct { __IO uint32_t RTC_CS; __IO uint32_t RTC_REF; __IO uint32_t RTC_ARM; __I uint32_t RTC_TIM; __O uint32_t RTC_INTCLR; __IO uint32_t OSC32K_CR; __IO uint32_t RTC_ATTA_TIM; } RTC_TypeDef; #define EXT_SENSOR_NUM 8 #define INNER_SENSOR_NUM 7 typedef struct { __IO uint32_t BPK_RR; __IO uint32_t SEN_EXT_TYPE; __IO uint32_t SEN_EXT_CFG; __IO uint32_t SEN_SOFT_EN; __IO uint32_t SEN_STATE; __IO uint32_t SEN_BRIDGE; __IO uint32_t SEN_SOFT_ATTACK; __IO uint32_t SEN_SOFT_LOCK; __IO uint32_t SEN_ATTACK_CNT; __IO uint32_t SEN_ATTACK_TYP; __IO uint32_t SEN_VG_DETECT; __IO uint32_t SEN_RNG_INI; __IO uint32_t RESERVED3[(0x0104-0x00EC) >> 2]; __IO uint32_t SEN_EN[19]; __IO uint32_t SEN_EXTS_START; __IO uint32_t SEN_LOCK; __IO uint32_t SEN_ANA0; __IO uint32_t SEN_ANA1; __IO uint32_t SEN_ATTCLR; FLAG_TypeDef SEN_FLAG; __IO uint32_t SEN_DEBUG; __I uint32_t RESERVED4[(0x200- 0x178) >> 2]; __IO uint32_t BPK_RAM[(0x600-0x200) >> 2]; } SEN_TypeDef; typedef struct { __IO uint32_t RNG_CSR; __IO uint32_t RNG_DATA[1]; __I uint32_t RES; __IO uint32_t RNG_ANA; __IO uint32_t RNG_PN; __IO uint32_t RNG_INDEX; } TRNG_TypeDef; typedef struct { __IO uint32_t IC_CON; __IO uint32_t IC_TAR; __IO uint32_t IC_SAR; __IO uint32_t IC_HS_MADDR; __IO uint32_t IC_DATA_CMD; __IO uint32_t IC_SS_SCL_HCNT; __IO uint32_t IC_SS_SCL_LCNT; __IO uint32_t IC_FS_SCL_HCNT; __IO uint32_t IC_FS_SCL_LCNT; __IO uint32_t IC_HS_SCL_HCNT; __IO uint32_t IC_HS_SCL_LCNT; __I uint32_t IC_INTR_STAT; __IO uint32_t IC_INTR_MASK; __I uint32_t IC_RAW_INTR_STAT; __IO uint32_t IC_RX_TL; __IO uint32_t IC_TX_TL; __I uint32_t IC_CLR_INTR; __I uint32_t IC_CLR_RX_UNDER; __I uint32_t IC_CLR_RX_OVER; __I uint32_t IC_CLR_TX_OVER; __I uint32_t IC_CLR_RD_REQ; __I uint32_t IC_CLR_TX_ABRT; __I uint32_t IC_CLR_RX_DONE; __I uint32_t IC_CLR_ACTIVITY; __I uint32_t IC_CLR_STOP_DET; __I uint32_t IC_CLR_START_DET; __I uint32_t IC_CLR_GEN_CALL; __IO uint32_t IC_ENABLE; __I uint32_t IC_STATUS; __I uint32_t IC_TXFLR; __I uint32_t IC_RXFLR; __IO uint32_t IC_SDA_HOLD; __I uint32_t IC_TX_ABRT_SOURCE; __IO uint32_t IC_SLV_DATA_NACK_ONLY; __IO uint32_t IC_DMA_CR; __IO uint32_t IC_DMA_TDLR; __IO uint32_t IC_DMA_RDLR; __IO uint32_t IC_SDA_SETUP; __IO uint32_t IC_ACK_GENERAL_CALL; __I uint32_t IC_ENABLE_STATUS; __IO uint32_t IC_FS_SPKLEN; __IO uint32_t IC_HS_SPKLEN; } I2C_TypeDef; typedef struct { __IO uint32_t KCU_CTRL0; __IO uint32_t KCU_CTRL1; __I uint32_t KCU_STATUS; __I uint32_t KCU_EVENT; __IO uint32_t KCU_RNG; } KCU_TypeDef; typedef struct { __IO uint32_t SAR_L; __IO uint32_t SAR_H; __IO uint32_t DAR_L; __IO uint32_t DAR_H; __IO uint32_t LLP_L; __IO uint32_t LLP_H; __IO uint32_t CTL_L; __IO uint32_t CTL_H; __IO uint32_t SSTAT_L; __IO uint32_t SSTAT_H; __IO uint32_t DSTAT_L; __IO uint32_t DSTAT_H; __IO uint32_t SSTATAR_L; __IO uint32_t SSTATAR_H; __IO uint32_t DSTATAR_L; __IO uint32_t DSTATAR_H; __IO uint32_t CFG_L; __IO uint32_t CFG_H; __IO uint32_t SGR_L; __IO uint32_t SGR_H; __IO uint32_t DSR_L; __IO uint32_t DSR_H; } DMA_TypeDef; typedef struct { DMA_TypeDef DMA_Channel[8]; __I uint32_t RawTfr_L; __I uint32_t RawTfr_H; __I uint32_t RawBlock_L; __I uint32_t RawBlock_H; __I uint32_t RawSrcTran_L; __I uint32_t RawSrcTran_H; __I uint32_t RawDstTran_L; __I uint32_t RawDstTran_H; __I uint32_t RawErr_L; __I uint32_t RawErr_H; __I uint32_t StatusTfr_L; __I uint32_t StatusTfr_H; __I uint32_t StatusBlock_L; __I uint32_t StatusBlock_H; __I uint32_t StatusSrcTran_L; __I uint32_t StatusSrcTran_H; __I uint32_t StatusDstTran_L; __I uint32_t StatusDstTran_H; __I uint32_t StatusErr_L; __I uint32_t StatusErr_H; __IO uint32_t MaskTfr_L; __IO uint32_t MaskTfr_H; __IO uint32_t MaskBlock_L; __IO uint32_t MaskBlock_H; __IO uint32_t MaskSrcTran_L; __IO uint32_t MaskSrcTran_H; __IO uint32_t MaskDstTran_L; __IO uint32_t MaskDstTran_H; __IO uint32_t MaskErr_L; __IO uint32_t MaskErr_H; __O uint32_t ClearTfr_L; __O uint32_t ClearTfr_H; __O uint32_t ClearBlock_L; __O uint32_t ClearBlock_H; __O uint32_t ClearSrcTran_L; __O uint32_t ClearSrcTran_H; __O uint32_t ClearDstTran_L; __O uint32_t ClearDstTran_H; __O uint32_t ClearErr_L; __O uint32_t ClearErr_H; __I uint32_t StatusInt_L; __I uint32_t StatusInt_H; __IO uint32_t ReqSrcReg_L; __IO uint32_t ReqSrcReg_H; __IO uint32_t ReqDstReg_L; __IO uint32_t ReqDstReg_H; __IO uint32_t SglReqSrcReg_L; __IO uint32_t SglReqSrcReg_H; __IO uint32_t SglReqDstReg_L; __IO uint32_t SglReqDstReg_H; __IO uint32_t LstSrcReg_L; __IO uint32_t LstSrcReg_H; __IO uint32_t LstDstReg_L; __IO uint32_t LstDstReg_H; __IO uint32_t DmaCfgReg_L; __IO uint32_t DmaCfgReg_H; __IO uint32_t ChEnReg_L; __IO uint32_t ChEnReg_H; __I uint32_t DmaIdReg_L; __I uint32_t DmaIdReg_H; __IO uint32_t DmaTestReg_L; __IO uint32_t DmaTestReg_H; __IO uint32_t RESERVED2[4]; __I uint32_t DMA_COMP_PARAMS_6_L; __I uint32_t DMA_COMP_PARAMS_6_H; __I uint32_t DMA_COMP_PARAMS_5_L; __I uint32_t DMA_COMP_PARAMS_5_H; __I uint32_t DMA_COMP_PARAMS_4_L; __I uint32_t DMA_COMP_PARAMS_4_H; __I uint32_t DMA_COMP_PARAMS_3_L; __I uint32_t DMA_COMP_PARAMS_3_H; __I uint32_t DMA_COMP_PARAMS_2_L; __I uint32_t DMA_COMP_PARAMS_2_H; __I uint32_t DMA_COMP_PARAMS_1_L; __I uint32_t DMA_COMP_PARAMS_1_H; __I uint32_t DMA_Component_ID_Register_L; __I uint32_t DMA_Component_ID_Register_H; } DMA_MODULE_TypeDef; typedef struct { __IO uint32_t lcdi_ctrl; __IO uint32_t lcdi_cycle; __IO uint32_t lcdi_status; __IO uint32_t lcdi_data; __IO uint32_t lcdi_fifolevel; __IO uint32_t lcdi_fifothr; } LCD_TypeDef; typedef struct { __IO uint32_t SCI_DATA; __IO uint32_t SCI_CR0; __IO uint32_t SCI_CR1; __IO uint32_t SCI_CR2; __IO uint32_t SCI_IER; __IO uint32_t SCI_RETRY; __IO uint32_t SCI_TIDE; __IO uint32_t SCI_TXCOUNT; __IO uint32_t SCI_RXCOUNT; __I uint32_t SCI_FR; __IO uint32_t SCI_RXTIME; __IO uint32_t SCI_ISTAT; __IO uint32_t SCI_STABLE; __IO uint32_t SCI_ATIME; __IO uint32_t SCI_DTIME; __IO uint32_t SCI_ATRSTIME; __IO uint32_t SCI_ATRDTIME; __IO uint32_t SCI_BLKTIME; __IO uint32_t SCI_CHTIME; __IO uint32_t SCI_CLKICC; __IO uint32_t SCI_BAUD; __IO uint32_t SCI_VALUE; __IO uint32_t SCI_CHGUARD; __IO uint32_t SCI_BLKGUARD; __IO uint32_t SCI_SYNCCR; __IO uint32_t SCI_SYNCDATA; __IO uint32_t SCI_RAWSTAT; __IO uint32_t SCI_IIR; __I uint32_t SCI_RES1[4]; __I uint32_t SCI_RES2[32]; } SCI_TypeDef; /** * @brief DCMI&IMG COP */ typedef struct { __IO uint32_t CR; /*!< DCMI control register 1, Address offset: 0x00 */ __IO uint32_t SR; /*!< DCMI status register, Address offset: 0x04 */ __IO uint32_t RISR; /*!< DCMI raw interrupt status register, Address offset: 0x08 */ __IO uint32_t IER; /*!< DCMI interrupt enable register, Address offset: 0x0C */ __IO uint32_t MISR; /*!< DCMI masked interrupt status register, Address offset: 0x10 */ __IO uint32_t ICR; /*!< DCMI interrupt clear register, Address offset: 0x14 */ __IO uint32_t RESERVED1[2]; __IO uint32_t CWSTRTR; /*!< DCMI crop window start, Address offset: 0x20 */ __IO uint32_t CWSIZER; /*!< DCMI crop window size, Address offset: 0x24 */ __IO uint32_t DR; /*!< DCMI data register, Address offset: 0x28 */ } DCMI_TypeDef; typedef struct { __IO uint32_t RESERVED[(0x2000-0x0000)/4]; __IO uint32_t CFG; __IO uint32_t CS; __IO uint32_t PROT; __IO uint32_t ADDR; __IO uint32_t PDATA; __IO uint32_t RO; __IO uint32_t ROL; __IO uint32_t RSVD; __IO uint32_t TIM; __IO uint32_t TIM_EN; } OTP_TypeDef; typedef struct { __IO uint32_t RESERVED0[(0x0008-0x0000) >> 2]; __IO uint32_t SSC_CR3; __O uint32_t RESERVED1[(0x0104-0x000C) >> 2]; __IO uint32_t SSC_SR; __IO uint32_t SSC_SR_CLR; __IO uint32_t SSC_ACK; __O uint32_t RESERVED2[(0x0184-0x0110) >> 2]; __IO uint32_t DATARAM_SCR; __O uint32_t RESERVED3[(0x01FC-0x0188) >> 2]; __IO uint32_t BPU_RWC; __O uint32_t RESERVED4[(0x03EC-0x0200) >> 2]; __IO uint32_t MAIN_SEN_LOCK; __IO uint32_t MAIN_SEN_EN; } SSC_TypeDef; typedef struct { __IO uint32_t TST_JTAG; __IO uint32_t TST_ROM; __IO uint32_t TST_FLASH; } MH_SMCU_TST_TypeDef; #if defined ( __CC_ARM ) #pragma no_anon_unions #endif /*@}*/ /* end of group _Peripherals */ /******************************************************************************/ /* Peripheral memory map */ /******************************************************************************/ /* ToDo: add here your device peripherals base addresses following is an example for timer */ /** @addtogroup _MemoryMap Memory Mapping @{ */ /* Peripheral and SRAM base address */ #define AIR105_FLASH_BASE (0x01000000UL) /*!< (FLASH ) Base Address */ #define AIR105_SRAM_BASE (0x20000000UL) /*!< (SRAM ) Base Address */ #define AIR105_PERIPH_BASE (0x40000000UL) /*!< (Peripheral) Base Address */ #define AIR105_SRAM_SIZE (0xA0000) #define AIR105_OTP_BASE (0x40008000UL) #define AIR105_OTP_SIZE (1UL << 13) /* Peripheral memory map */ #define AIR105_AHB_BASE (AIR105_PERIPH_BASE) #define AIR105_APB0_BASE (AIR105_PERIPH_BASE + 0x10000) #define AIR105_APB1_BASE (AIR105_PERIPH_BASE + 0x20000) #define AIR105_APB2_BASE (AIR105_PERIPH_BASE + 0x30000) #define AIR105_APB3_BASE (AIR105_PERIPH_BASE + 0x40000) #define SSC_BASE (AIR105_AHB_BASE + 0x0000) #define TST_BASE (AIR105_AHB_BASE + 0x03F4) #define DMA_BASE (AIR105_AHB_BASE + 0x0800) #define USB_BASE (AIR105_AHB_BASE + 0x0C00) #define LCD_BASE (AIR105_AHB_BASE + 0x1000) #define OTP_BASE (AIR105_AHB_BASE + 0x8000) #define DCMI_BASE (AIR105_AHB_BASE + 0x60000) #define CACHE_BASE (AIR105_AHB_BASE + 0x80000) #define QRCODE_BASE (AIR105_AHB_BASE + 0x90000) #define GPU_BASE (AIR105_AHB_BASE + 0xA1000) #define QSPI_BASE (AIR105_AHB_BASE + 0xA2000) #define HSPI_BASE (AIR105_AHB_BASE + 0xA3000) #define SCI0_BASE (AIR105_APB0_BASE) #define CRC_BASE (AIR105_APB0_BASE + 0x2000) #define TIMM0_BASE (AIR105_APB0_BASE + 0x3000) #define ADC_BASE (AIR105_APB0_BASE + 0x4000) #define DAC_BASE (AIR105_APB0_BASE + 0x4100) #define AWD_BASE (AIR105_APB0_BASE + 0x4200) #define SCI2_BASE (AIR105_APB0_BASE + 0x5000) #define UART0_BASE (AIR105_APB0_BASE + 0x6000) #define UART1_BASE (AIR105_APB0_BASE + 0x7000) #define SPIM1_BASE (AIR105_APB0_BASE + 0x8000) #define SPIM2_BASE (AIR105_APB0_BASE + 0x9000) #define SPIM0_BASE (AIR105_APB0_BASE + 0xA000) #define SPIS0_BASE (AIR105_APB0_BASE + 0xB000) #define WDG_BASE (AIR105_APB0_BASE + 0xC000) #define GPIO_BASE (AIR105_APB0_BASE + 0xD000) #define TRNG_BASE (AIR105_APB0_BASE + 0xE000) #define SYSCTRL_BASE (AIR105_APB0_BASE + 0xF000) #define MSR_BASE (AIR105_APB1_BASE) #define BPU_BASE (AIR105_APB2_BASE) #define UART2_BASE (AIR105_APB3_BASE + 0x4000) #define UART3_BASE (AIR105_APB3_BASE + 0x5000) #define KEYBOARD_BASE (AIR105_APB3_BASE + 0x8000) #define I2C0_BASE (AIR105_APB3_BASE + 0x9000) #define HSPIM_BASE (AIR105_AHB_BASE + 0xA3020) /*@}*/ /* end of group _MemoryMap */ /******************************************************************************/ /* Peripheral declaration */ /******************************************************************************/ /* ToDo: add here your device peripherals pointer definitions following is an example for timer */ /** @addtogroup _PeripheralDecl Peripheral Declaration @{ */ #define SYSCTRL ((SYSCTRL_TypeDef *) SYSCTRL_BASE) #define UART0 ((UART_TypeDef *) UART0_BASE) #define UART1 ((UART_TypeDef *) UART1_BASE) #define UART2 ((UART_TypeDef *) UART2_BASE) #define UART3 ((UART_TypeDef *) UART3_BASE) #define SPIM0 ((SPI_TypeDef *) SPIM0_BASE) #define SPIM1 ((SPI_TypeDef *) SPIM1_BASE) #define SPIM2 ((SPI_TypeDef *) SPIM2_BASE) #define SPIS0 ((SPI_TypeDef *) SPIS0_BASE) #define QSPI ((QSPI_TypeDef *) QSPI_BASE) #define HSPIM ((HSPIM_TypeDef *) HSPIM_BASE) #define CACHE ((CACHE_TypeDef *)CACHE_BASE) #define QRCODE ((QRCODE_TypeDef *)QRCODE_BASE) #define GPU ((GPU_TypeDef *)GPU_BASE) #define SCI0 ((SCI_TypeDef *) SCI0_BASE) #define SCI2 ((SCI_TypeDef *) SCI2_BASE) #define TIMM0 ((TIM_Module_TypeDef *)TIMM0_BASE) #define ADC0 ((ADC_TypeDef *)ADC_BASE) #define DAC ((DAC_TypeDef *)DAC_BASE) #define AWD ((AWD_TypeDef *)AWD_BASE) #define TRNG ((TRNG_TypeDef *)TRNG_BASE) #define LCD ((LCD_TypeDef *)LCD_BASE) #define KCU ((KCU_TypeDef *)KEYBOARD_BASE) #define CRC ((CRC_TypeDef *)CRC_BASE) #define OTP ((OTP_TypeDef *)OTP_BASE) #define I2C0 ((I2C_TypeDef *)I2C0_BASE) #define DMA ((DMA_MODULE_TypeDef *)DMA_BASE) #define DMA_Channel_0 ((DMA_TypeDef *)DMA_BASE) #define DMA_Channel_1 ((DMA_TypeDef *)(DMA_BASE + 0x58)) #define DMA_Channel_2 ((DMA_TypeDef *)(DMA_BASE + 0x58*2)) #define DMA_Channel_3 ((DMA_TypeDef *)(DMA_BASE + 0x58*3)) #define DMA_Channel_4 ((DMA_TypeDef *)(DMA_BASE + 0x58*4)) #define DMA_Channel_5 ((DMA_TypeDef *)(DMA_BASE + 0x58*5)) #define DMA_Channel_6 ((DMA_TypeDef *)(DMA_BASE + 0x58*6)) #define DMA_Channel_7 ((DMA_TypeDef *)(DMA_BASE + 0x58*7)) #define GPIO ((GPIO_MODULE_TypeDef *)GPIO_BASE) #define GPIOA ((GPIO_TypeDef *)GPIO_BASE) #define GPIOB ((GPIO_TypeDef *)(GPIO_BASE + 0x0010)) #define GPIOC ((GPIO_TypeDef *)(GPIO_BASE + 0x0020)) #define GPIOD ((GPIO_TypeDef *)(GPIO_BASE + 0x0030)) #define GPIOE ((GPIO_TypeDef *)(GPIO_BASE + 0x0040)) #define GPIOF ((GPIO_TypeDef *)(GPIO_BASE + 0x0050)) #define GPIO_GROUP ((GPIO_TypeDef *)GPIO_BASE) #define GPIO_ALT_GROUP ((__IO uint32_t *)(GPIO_BASE + 0x180)) #define GPIO_WKEN_TYPE_EN ((__IO uint32_t *)(GPIO_BASE + 0x220)) #define GPIO_WKEN_P0_EN ((__IO uint32_t *)(GPIO_BASE + 0x224)) #define GPIO_WKEN_P1_EN ((__IO uint32_t *)(GPIO_BASE + 0x228)) #define GPIO_WKEN_P2_EN ((__IO uint32_t *)(GPIO_BASE + 0x22C)) #define WDT ((WDT_TypeDef *)WDG_BASE) #define SSC ((SSC_TypeDef *)SSC_BASE) #define TST ((MH_SMCU_TST_TypeDef *)TST_BASE) #define DCMI ((DCMI_TypeDef *)DCMI_BASE) #define BPU ((BPU_TypeDef *)BPU_BASE) #define BPK ((BPK_TypeDef *)BPU_BASE) #define RTC ((RTC_TypeDef *)(BPU_BASE + 0xA0)) #define SENSOR ((SEN_TypeDef *)(BPU_BASE + 0xBC)) #define SEN_FLAG ((FLAG_TypeDef*)(BPU_BASE + 0x164)) /** @addtogroup Exported_constants * @{ */ /** @addtogroup Peripheral_Registers_Bits_Definition * @{ */ /******************************************************************************/ /* Peripheral Registers_Bits_Definition */ /******************************************************************************/ /******************************************************************************/ /* */ /* System Control Unit */ /* */ /******************************************************************************/ /******************* Bit definition for FREQ_SEL register *******************/ #define SYSCTRL_FREQ_SEL_XTAL_Pos (16) #define SYSCTRL_FREQ_SEL_XTAL_Mask (0x1F << SYSCTRL_FREQ_SEL_XTAL_Pos) #define SYSCTRL_FREQ_SEL_XTAL_108Mhz (0x08 << SYSCTRL_FREQ_SEL_XTAL_Pos) #define SYSCTRL_FREQ_SEL_XTAL_120Mhz (0x09 << SYSCTRL_FREQ_SEL_XTAL_Pos) #define SYSCTRL_FREQ_SEL_XTAL_132Mhz (0x0a << SYSCTRL_FREQ_SEL_XTAL_Pos) #define SYSCTRL_FREQ_SEL_XTAL_144Mhz (0x0b << SYSCTRL_FREQ_SEL_XTAL_Pos) #define SYSCTRL_FREQ_SEL_XTAL_156Mhz (0x0c << SYSCTRL_FREQ_SEL_XTAL_Pos) #define SYSCTRL_FREQ_SEL_XTAL_168Mhz (0x0d << SYSCTRL_FREQ_SEL_XTAL_Pos) #define SYSCTRL_FREQ_SEL_XTAL_180Mhz (0x0e << SYSCTRL_FREQ_SEL_XTAL_Pos) #define SYSCTRL_FREQ_SEL_XTAL_192Mhz (0x0f << SYSCTRL_FREQ_SEL_XTAL_Pos) #define SYSCTRL_FREQ_SEL_XTAL_204Mhz (0x10 << SYSCTRL_FREQ_SEL_XTAL_Pos) #define SYSCTRL_FREQ_SEL_CLOCK_SOURCE_Pos (12) #define SYSCTRL_FREQ_SEL_CLOCK_SOURCE_Mask (0x01 << SYSCTRL_FREQ_SEL_CLOCK_SOURCE_Pos) #define SYSCTRL_FREQ_SEL_CLOCK_SOURCE_EXT (0x00 << SYSCTRL_FREQ_SEL_CLOCK_SOURCE_Pos) #define SYSCTRL_FREQ_SEL_CLOCK_SOURCE_INC (0x01 << SYSCTRL_FREQ_SEL_CLOCK_SOURCE_Pos) #define SYSCTRL_FREQ_SEL_PLL_DIV_Pos (8) #define SYSCTRL_FREQ_SEL_PLL_DIV_Mask (0x03 << SYSCTRL_FREQ_SEL_PLL_DIV_Pos) #define SYSCTRL_FREQ_SEL_PLL_DIV_1_0 (0x00 << SYSCTRL_FREQ_SEL_PLL_DIV_Pos) #define SYSCTRL_FREQ_SEL_PLL_DIV_1_2 (0x01 << SYSCTRL_FREQ_SEL_PLL_DIV_Pos) #define SYSCTRL_FREQ_SEL_PLL_DIV_1_4 (0x02 << SYSCTRL_FREQ_SEL_PLL_DIV_Pos) #define SYSCTRL_FREQ_SEL_HCLK_DIV_Pos (4) #define SYSCTRL_FREQ_SEL_HCLK_DIV_Mask (0x01 << SYSCTRL_FREQ_SEL_HCLK_DIV_Pos) #define SYSCTRL_FREQ_SEL_HCLK_DIV_1_0 (0x00 << SYSCTRL_FREQ_SEL_HCLK_DIV_Pos) #define SYSCTRL_FREQ_SEL_HCLK_DIV_1_2 (0x01 << SYSCTRL_FREQ_SEL_HCLK_DIV_Pos) #define SYSCTRL_FREQ_SEL_PCLK_DIV_Pos (0) #define SYSCTRL_FREQ_SEL_PCLK_DIV_Mask (0x01 << SYSCTRL_FREQ_SEL_PCLK_DIV_Pos) #define SYSCTRL_FREQ_SEL_PCLK_DIV_1_2 (0x00 << SYSCTRL_FREQ_SEL_PCLK_DIV_Pos) #define SYSCTRL_FREQ_SEL_PCLK_DIV_1_4 (0x01 << SYSCTRL_FREQ_SEL_PCLK_DIV_Pos) /******************* Bit definition for CG_CTRL2 register *******************/ #define SYSCTRL_AHBPeriph_DMA ((uint32_t)0x20000000) #define SYSCTRL_AHBPeriph_USB ((uint32_t)0x10000000) #define SYSCTRL_AHBPeriph_QR ((uint32_t)0x00000020) #define SYSCTRL_AHBPeriph_OTP ((uint32_t)0x00000008) #define SYSCTRL_AHBPeriph_GPU ((uint32_t)0x00000004) #define SYSCTRL_AHBPeriph_LCD ((uint32_t)0x00000002) #define SYSCTRL_AHBPeriph_CRYPT ((uint32_t)0x00000001) #define SYSCTRL_AHBPeriph_ALL ((uint32_t)0x3000002F) #define IS_SYSCTRL_AHB_PERIPH(PERIPH) ((((PERIPH) & ~SYSCTRL_AHBPeriph_ALL) == 0x00) && ((PERIPH) != 0x00)) /******************* Bit definition for CG_CTRL1 register *******************/ #define SYSCTRL_APBPeriph_TRNG ((uint32_t)0x80000000) #define SYSCTRL_APBPeriph_ADC ((uint32_t)0x40000000) #define SYSCTRL_APBPeriph_CRC ((uint32_t)0x20000000) #define SYSCTRL_APBPeriph_KBD ((uint32_t)0x08000000) #define SYSCTRL_APBPeriph_BPU ((uint32_t)0x04000000) #define SYSCTRL_APBPeriph_DCMIS ((uint32_t)0x00800000) #define SYSCTRL_APBPeriph_TIMM0 ((uint32_t)0x00200000) #define SYSCTRL_APBPeriph_GPIO ((uint32_t)0x00100000) #define SYSCTRL_APBPeriph_I2C0 ((uint32_t)0x00040000) #define SYSCTRL_APBPeriph_SCI2 ((uint32_t)0x00010000) #define SYSCTRL_APBPeriph_SCI0 ((uint32_t)0x00004000) #define SYSCTRL_APBPeriph_HSPI ((uint32_t)0x00002000) #define SYSCTRL_APBPeriph_SPI2 ((uint32_t)0x00000400) #define SYSCTRL_APBPeriph_SPI1 ((uint32_t)0x00000200) #define SYSCTRL_APBPeriph_SPI0 ((uint32_t)0x00000100) #define SYSCTRL_APBPeriph_UART3 ((uint32_t)0x00000008) #define SYSCTRL_APBPeriph_UART2 ((uint32_t)0x00000004) #define SYSCTRL_APBPeriph_UART1 ((uint32_t)0x00000002) #define SYSCTRL_APBPeriph_UART0 ((uint32_t)0x00000001) #define SYSCTRL_APBPeriph_ALL ((uint32_t)0xECB5670F) #define IS_SYSCTRL_APB_PERIPH(PERIPH) ((((PERIPH) & ~SYSCTRL_APBPeriph_ALL) == 0x00) && ((PERIPH) != 0x00)) /******************* Bit definition for SOFT_RST2 register *******************/ #define SYSCTRL_GLB_RESET ((uint32_t)0x80000000) #define SYSCTRL_CM3_RESET ((uint32_t)0x40000000) #define SYSCTRL_DMA_RESET ((uint32_t)0x20000000) #define SYSCTRL_USB_RESET ((uint32_t)0x10000000) #define SYSCTRL_QR_RESET ((uint32_t)0x00000020) #define SYSCTRL_OTP_RESET ((uint32_t)0x00000008) #define SYSCTRL_GPU_RESET ((uint32_t)0x00000004) #define SYSCTRL_LCD_RESET ((uint32_t)0x00000002) #define SYSCTRL_CRYPT_RESET ((uint32_t)0x00000001) #define SYSCTRL_AHBPeriph_RESET_ALL ((uint32_t)0xF000002F) #define IS_SYSCTRL_AHB_PERIPH_RESET(PERIPH) ((((PERIPH) & ~SYSCTRL_AHBPeriph_RESET_ALL) == 0x00) && ((PERIPH) != 0x00)) /******************* Bit definition for PHER_CTRL register *******************/ #define SYSCTRL_PHER_CTRL_SPI0_SLV_EN ((uint32_t)0x01000000) /* 0:MASTER 1:SLAVE */ #define SYSCTRL_PHER_CTRL_SCI2_VCCEN_INV ((uint32_t)0x00400000) #define SYSCTRL_PHER_CTRL_SCI0_VCCEN_INV ((uint32_t)0x00100000) #define SYSCTRL_PHER_CTRL_SCI2_CDET_INV ((uint32_t)0x00040000) #define SYSCTRL_PHER_CTRL_SCI0_CDET_INV ((uint32_t)0x00010000) /******************* Bit definition for DMA_CHAN REGISTER ********************/ #define SYSCTRL_PHER_CTRL_DMA_CH0_IF_Pos (0) #define SYSCTRL_PHER_CTRL_DMA_CH0_IF_Mask (0x3FU<