/**************************************************************************//** * @file S3FM02G.h * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File for the * Samsung 'S3FM02G' Device Series * @version V0.01 * @date 01. Feb 2011 * * @note * Copyright (C) 2011 ARM Limited. All rights reserved. * * @par * ARM Limited (ARM) is supplying this software for use with Cortex-M * processor based microcontrollers. This file can be freely distributed * within development tools that are supporting such ARM based processors. * * @par * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. * ******************************************************************************/ #ifndef __S3FM02G_H #define __S3FM02G_H #ifdef __cplusplus extern "C" { #endif /** @addtogroup S3FM02G_Definitions S3FM02G Definitions This file defines all structures and symbols for S3FM02G: - registers and bitfields - peripheral base address - peripheral ID - PIO definitions @{ */ /******************************************************************************/ /* Processor and Core Peripherals */ /******************************************************************************/ /** @addtogroup S3FM02G_CMSIS S3FM02G CMSIS Definitions Configuration of the Cortex-M3 Processor and Core Peripherals @{ */ /* * ========================================================================== * ---------- Interrupt Number Definition ----------------------------------- * ========================================================================== */ typedef enum IRQn { /****** Cortex-M3 Processor Exceptions Numbers ****************************************************/ NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ HardFault_IRQn = -13, /*!< 3 Cortex-M3 Hard Fault Interrupt */ MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */ BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */ UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */ SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */ DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */ PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */ SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */ /****** S3FM02G Specific Interrupt Numbers ********************************************************/ WDTINT_IRQn = 0, /*!< Watch-dog Timer Interrupt */ CMINT_IRQn = 1, /*!< Clock Manager Interrupt */ PFCINT_IRQn = 2, /*!< Program Flash Controller Interrupt */ DFCINT_IRQn = 3, /*!< Data Flash Controller Interrupt */ DMAINT_IRQn = 4, /*!< DMA Controller Interrupt */ FRTINT_IRQn = 5, /*!< Free-running Timer Interrupt */ WSI0INT_IRQn = 6, /*!< Wakeup source 0 */ WSI1INT_IRQn = 7, /*!< Wakeup source 1 */ IMC0INT_IRQn = 8, /*!< Inverter Motor Controller 0 Interrupt */ ENC0INT_IRQn = 9, /*!< Encoder Counter 0 Interrupt */ IMC1INT_IRQn = 10, /*!< Inverter Motor Controller 1 Interrupt */ ENC1INT_IRQn = 11, /*!< Encoder Counter 1 Interrupt */ CAN0INT_IRQn = 12, /*!< CAN0 Interrupt */ USART0INT_IRQn = 13, /*!< USART0 Interrupt */ ADC0INT_IRQn = 14, /*!< ADC0 Interrupt */ ADC1INT_IRQn = 15, /*!< ADC1 Interrupt */ SSP0INT_IRQn = 16, /*!< SSP0 Interrupt */ I2C0INT_IRQn = 17, /*!< I2C0 Interrupt */ TC0INT_IRQn = 18, /*!< Timer/Counter0 Interrupt */ PWM0INT_IRQn = 19, /*!< PWM0 Interrupt */ WSI2INT_IRQn = 20, /*!< Wakeup source 2 */ WSI3INT_IRQn = 21, /*!< Wakeup source 3 */ TC1INT_IRQn = 22, /*!< Timer/Counter1 Interrupt */ PWM1INT_IRQn = 23, /*!< PWM1 Interrupt */ USART1INT_IRQn = 24, /*!< USART1 Interrupt */ SSP1INT_IRQn = 25, /*!< SSP1 Interrupt */ I2C1INT_IRQn = 26, /*!< I2C1 Interrupt */ CAN1INT_IRQn = 27, /*!< CAN1 Interrupt */ STTINT_IRQn = 28, /*!< STT Interrupt */ USART2INT_IRQn = 29, /*!< USART2 Interrupt */ TC2INT_IRQn = 30, /*!< Timer/Counter2 Interrupt */ TC3INT_IRQn = 31, /*!< Timer/Counter3 Interrupt */ PWM2INT_IRQn = 32, /*!< PWM2 Interrupt */ WSI4INT_IRQn = 33, /*!< Wakeup source 4 */ WSI5INT_IRQn = 34, /*!< Wakeup source 5 */ PWM3INT_IRQn = 35, /*!< PWM3 Interrupt */ USART3INT_IRQn = 36, /*!< USART4 Interrupt */ GPIO0INT_IRQn = 37, /*!< GPIO 0 Interrupt */ GPIO1INT_IRQn = 38, /*!< GPIO 1 Interrupt */ TC4INT_IRQn = 39, /*!< Timer/Counter4 Interrupt */ WSI6INT_IRQn = 40, /*!< Wakeup source 6 */ WSI7INT_IRQn = 41, /*!< Wakeup source 7 */ PWM4INT_IRQn = 42, /*!< PWM4 Interrupt */ TC5INT_IRQn = 43, /*!< Timer/Counter5 Interrupt */ WSI8INT_IRQn = 44, /*!< Wakeup source 8 */ WSI9INT_IRQn = 45, /*!< Wakeup source 9 */ WSI10INT_IRQn = 46, /*!< Wakeup source 10 */ WSI11INT_IRQn = 47, /*!< Wakeup source 11 */ PWM5INT_IRQn = 48, /*!< PWM5 Interrupt */ TC6INT_IRQn = 49, /*!< Timer/Counter6 Interrupt */ WSI12INT_IRQn = 50, /*!< Wakeup source 12 */ WSI13INT_IRQn = 51, /*!< Wakeup source 13 */ WSI14INT_IRQn = 52, /*!< Wakeup source 14 */ WSI15INT_IRQn = 53, /*!< Wakeup source 15 */ PWM6INT_IRQn = 54, /*!< PWM6 Interrupt */ TC7INT_IRQn = 55, /*!< Timer/Counter7 Interrupt */ PWM7INT_IRQn = 56, /*!< PWM8 Interrupt */ GPIO2INT_IRQn = 57, /*!< GPIO 2 Interrupt */ GPIO3INT_IRQn = 58, /*!< GPIO 3 Interrupt */ OPAMPINT_IRQn = 59, /*!< OP-AMP interrupt */ } IRQn_Type; /* * ========================================================================== * ----------- Processor and Core Peripheral Section ------------------------ * ========================================================================== */ /* Configuration of the Cortex-M3 Processor and Core Peripherals */ #define __MPU_PRESENT 0 /*!< MPU present or not */ #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 */ /*@}*/ /* end of group S3FM02G_CMSIS */ #include "core_cm3.h" /* Cortex-M3 processor and core peripherals */ #include "system_S3FM02G.h" /* S3FM02G System */ /******************************************************************************/ /* Device Specific Peripheral registers structures */ /******************************************************************************/ /** @addtogroup S3FM02G_Peripherals S3FM02G Peripherals S3FM02G Device Specific Peripheral registers structures @{ */ #if defined ( __CC_ARM ) #pragma anon_unions #endif /*------------- A/D Converter 0 (ADC0) ---------------------------*/ /** @addtogroup S3FM02G_ADC0 A/D Converter 0 (ADC0) @{ */ typedef struct { __I uint32_t IDR; /*!< Offset: 0x000 (R ) ID Register */ __IO uint32_t CEDR; /*!< Offset: 0x004 (R/W) Clock Enable/Disable Register */ __O uint32_t SRR; /*!< Offset: 0x008 ( W) Software Reset Register */ __O uint32_t CSR; /*!< Offset: 0x00C ( W) Control Set Register */ __O uint32_t CCR; /*!< Offset: 0x010 ( W) Control Clear Register */ __IO uint32_t CDR; /*!< Offset: 0x014 (R/W) Clock Divider Register */ __IO uint32_t MR; /*!< Offset: 0x018 (R/W) Mode Register */ __I uint32_t CCSR0; /*!< Offset: 0x01C (R ) Conversion Channel Register */ __I uint32_t CCSR1; /*!< Offset: 0x020 (R ) Conversion Channel Register */ __I uint32_t SR; /*!< Offset: 0x024 (R ) Status Register */ __IO uint32_t IMSCR; /*!< Offset: 0x028 (R/W) Interrupt Mask Set/Clear Register */ __I uint32_t RISR; /*!< Offset: 0x02C (R ) Raw Interrupt Status Register */ __I uint32_t MISR; /*!< Offset: 0x030 (R ) Masked Interrupt Status Register */ __O uint32_t ICR; /*!< Offset: 0x034 ( W) Interrupt Clear Register */ __I uint32_t CRR0; /*!< Offset: 0x038 (R ) Conversion Result Register */ __I uint32_t CRR1; /*!< Offset: 0x03C (R ) Conversion Result Register */ __IO uint32_t GCR0; /*!< Offset: 0x040 (R/W) Gain Calibration Register */ __IO uint32_t OCR0; /*!< Offset: 0x044 (R/W) Offset Calibration Register */ __IO uint32_t GCR1; /*!< Offset: 0x048 (R/W) Gain Calibration Register */ __IO uint32_t OCR1; /*!< Offset: 0x04C (R/W) Offset Calibration Register */ __IO uint32_t DMACR; /*!< Offset: 0x050 (R/W) DMA Control Register */ } S3FM_ADC0_TypeDef; /*@}*/ /* end of group S3FM02G_ADC0 */ /*------------- A/D Converter 1 (ADC1) ---------------------------*/ /** @addtogroup S3FM02G_ADC1 A/D Converter 0 (ADC1) @{ */ typedef struct { __I uint32_t IDR; /*!< Offset: 0x000 (R ) ID Register */ __IO uint32_t CEDR; /*!< Offset: 0x004 (R/W) Clock Enable/Disable Register */ __O uint32_t SRR; /*!< Offset: 0x008 ( W) Software Reset Register */ __O uint32_t CSR; /*!< Offset: 0x00C ( W) Control Set Register */ __O uint32_t CCR; /*!< Offset: 0x010 ( W) Control Clear Register */ __IO uint32_t CDR; /*!< Offset: 0x014 (R/W) Clock Divider Register */ __IO uint32_t MR; /*!< Offset: 0x018 (R/W) Mode Register */ __I uint32_t CCSR; /*!< Offset: 0x01C (R ) Conversion Channel Sequence Register */ __I uint32_t SR; /*!< Offset: 0x020 (R ) Status Register */ __IO uint32_t IMSCR; /*!< Offset: 0x024 (R/W) Interrupt Mask Set/Clear Register */ __I uint32_t RISR; /*!< Offset: 0x028 (R ) Raw Interrupt Status Register */ __I uint32_t MISR; /*!< Offset: 0x02C (R ) Masked Interrupt Status Register */ __O uint32_t ICR; /*!< Offset: 0x030 ( W) Interrupt Clear Register */ __I uint32_t CRR; /*!< Offset: 0x034 (R ) Conversion Result Register */ __IO uint32_t GCR; /*!< Offset: 0x038 (R/W) Gain Calibration Register */ __IO uint32_t OCR; /*!< Offset: 0x03C (R/W) Calibration Register */ __IO uint32_t DMACR; /*!< Offset: 0x040 (R/W) DMA Control Register */ } S3FM_ADC1_TypeDef; /*@}*/ /* end of group S3FM02G_ADC1 */ /*------------- CAN Interface Structure ---------------------------*/ /** @addtogroup S3FM02G_CAN_IF Structure (CAN_IF) @{ */ typedef struct { __IO uint32_t TMR; /*!< Offset 0x000 (R/W) Command Register */ __IO uint32_t DAR; /*!< Offset 0x004( R/W) Data Register A Interface X */ __IO uint32_t DBR; /*!< Offset 0x008 (R/W) Data Register B Interface X */ __IO uint32_t MSKR; /*!< Offset 0x00C (R/W) Mask Register Interface X */ __IO uint32_t IR; /*!< Offset 0x010 (R/W) Identifier Register Interface X */ __IO uint32_t MCR; /*!< Offset 0x014 (R/W) Message Control Register Interface X */ __I uint32_t STPR; /*!< Offset 0x018 (R ) Stamp Register Interface X */ uint32_t ReservedA; } S3FM_CAN_IF_TypeDef; /*@}*/ /* end of group S3FM02G_CAN_IF */ /*------------- CAN Interface Structure ---------------------------*/ /** @addtogroup S3FM02G_CAN Structure (CAN) @{ */ typedef struct { uint32_t ReservedA[20]; __O uint32_t ECR; /*!< Offset 0x050 ( W) Enable Clock Register */ __IO uint32_t DCR; /*!< Offset 0x054 ( W) Disable Clock Register */ __IO uint32_t PMSR; /*!< Offset 0x058 (R ) Power Management Status Register */ __IO uint32_t ReservedB; __IO uint32_t CR; /*!< Offset 0x060 ( W) Control Register */ __IO uint32_t MR; /*!< Offset 0x064 (R/W) Mode Register */ __IO uint32_t ReservedC; __IO uint32_t CSR; /*!< Offset 0x06C ( W) Clear Status Register */ __IO uint32_t SR; /*!< Offset 0x070 (R ) Status Register */ __IO uint32_t IER; /*!< Offset 0x074 ( W) Interrupt Enable Register */ __IO uint32_t IDR; /*!< Offset 0x078 ( W) Interrupt Disable Register */ __IO uint32_t IMR; /*!< Offset 0x07C (R ) Interrupt Mask Register */ __IO uint32_t ReservedD; __IO uint32_t ISSR; /*!< Offset 0x084 (R ) Interrupt Source Status Register */ __IO uint32_t SIER; /*!< Offset 0x088 ( W) Source Interrupt Enable Register */ __IO uint32_t SIDR; /*!< Offset 0x08C ( W) Source Interrupt Disable Register */ __IO uint32_t SIMR; /*!< Offset 0x090 (R ) Source Interrupt Mask Register */ __IO uint32_t HPIR; /*!< Offset 0x094 (R ) Highest Priority Interrupt Register*/ __IO uint32_t ERCR; /*!< Offset 0x098 (R ) Error Counter Register */ __IO uint32_t ReservedE[25]; S3FM_CAN_IF_TypeDef IF[2]; /*!< Offset 0x100 (R/W) CAN interface */ __IO uint32_t TRR; /*!< Offset 0x140 (R ) Transmission Request Register */ __IO uint32_t NDR; /*!< Offset 0x144 (R ) New Data Register */ __IO uint32_t MVR; /*!< Offset 0x148 (R ) Message Valid Register */ __IO uint32_t TSTR; /*!< Offset 0x14C (R/W) Test Register */ } S3FM_CAN_TypeDef; /*@}*/ /* end of group S3FM02G_CAN */ /*------------- Clock Manager (CM) ---------------------------*/ /** @addtogroup S3FM02G_CM (CM) @{ */ typedef struct { __I uint32_t IDR; /*!< Offset 0x000 (R ) Id Register */ __O uint32_t SRR; /*!< Offset 0x004 (R ) Software Reset Register */ __O uint32_t CSR; /*!< Offset 0x008 (R ) Control Set Register */ __O uint32_t CCR; /*!< Offset 0x00C (R ) Control Clear Register */ __O uint32_t PCSR0; /*!< Offset 0x010 Peripheral Clock Set Register 0 */ __O uint32_t PCSR1; /*!< Offset 0x014 Peripheral Clock Set Register 1 */ __O uint32_t PCCR0; /*!< Offset 0x018 Peripheral Clock Clear Register 0 */ __O uint32_t PCCR1; /*!< Offset 0x01C Peripheral Clock Clear Register 1 */ __I uint32_t PCKSR0; /*!< Offset 0x020 Peripheral Clock Status Register 0 */ __I uint32_t PCKSR1; /*!< Offset 0x024 Peripheral Clock Status Register 1 */ __IO uint32_t MR0; /*!< Offset 0x028 Mode Register 0 */ __IO uint32_t MR1; /*!< Offset 0x02C Mode Register 1 */ __O uint32_t IMSCR; /*!< Offset 0x030 Interrupt Mask Set Clear Register*/ __I uint32_t RISR; /*!< Offset 0x034 Raw Interrupt Status Register */ __I uint32_t MISR; /*!< Offset 0x038 Masked Interrupt Status Register */ __O uint32_t ICR; /*!< Offset 0x03C Interrupt Clear Register */ __IO uint32_t SR; /*!< Offset 0x040 Status Register */ __IO uint32_t SCDR; /*!< Offset 0x044 System Clock Divider Register */ __IO uint32_t PCDR; /*!< Offset 0x048 Peripheral Clock Divider Register*/ __IO uint32_t FCDR; /*!< Offset 0x04C FRT Clock Divider Register */ __IO uint32_t STCDR; /*!< Offset 0x050 STT Clock Divider Register */ __IO uint32_t LCDR; /*!< Offset 0x054 LCD Clock Divider Register */ __IO uint32_t PSTR; /*!< Offset 0x058 PLL Stabilization Time Register */ __IO uint32_t PDPR; /*!< Offset 0x05C PLL Divider Parameter Register */ uint32_t ReservedA[2]; __IO uint32_t EMSTR; /*!< Offset 0x068 EMCLK Stabilization Time Register*/ __IO uint32_t ESSTR; /*!< Offset 0x06C ESCLK Stabilization Time Register*/ __IO uint32_t BTCDR; /*!< Offset 0x070 Basic Timer Register */ __IO uint32_t BTR; /*!< Offset 0x074 Basic Timer Register */ __IO uint32_t WCR0; /*!< Offset 0x078 Wakeup Control Register0 */ __IO uint32_t WCR1; /*!< Offset 0x07C Wakeup Control Register1 */ __IO uint32_t WCR2; /*!< Offset 0x080 Wakeup Control Register2 */ __IO uint32_t WCR3; /*!< Offset 0x084 Wakeup Control Register3 */ __IO uint32_t WIMSCR; /*!< Offset 0x088 Wakeup Interrupt Mask Set/Clear Register */ __I uint32_t WRISR; /*!< Offset 0x08C Wakeup Raw Interrupt Status Reg. */ __I uint32_t WMISR; /*!< Offset 0x090 Wakeup Masked Interrupt Status Register */ __O uint32_t WICR; /*!< Offset 0x094 Wakeup Interrupt Clear Register */ __IO uint32_t NISR0; /*!< Offset 0x098 NVIC Interrupt Status Register 0 */ __IO uint32_t NISR1; /*!< Offset 0x09C NVIC Interrupt Status Register 1 */ } S3FM_CM_TypeDef; /*@}*/ /* end of group S3FM02G_CM */ /** DFC Controller Structure *****/ /*------------- DFC Controller 1 (DFC) ---------------------------*/ /** @addtogroup S3FM02G_DFC DFC Controller (DFC) @{ */ typedef struct { __I uint32_t IDR; /*!< Offset 0x000 ID Register */ __IO uint32_t CEDR; /*!< Offset 0x004 Clock Enable/Disable Register */ __O uint32_t SRR; /*!< Offset 0x008 Software Reset Register */ __IO uint32_t CR; /*!< Offset 0x00C Control Register */ __IO uint32_t MR; /*!< Offset 0x010 Mode Register */ __IO uint32_t IMSCR; /*!< Offset 0x014 Interrupt Mask Set/Clear Register */ __I uint32_t RISR; /*!< Offset 0x018 Raw Interrupt Status Register */ __I uint32_t MISR; /*!< Offset 0x01C Masked Interrupt Status Register */ __O uint32_t ICR; /*!< Offset 0x020 Interrupt Clear Register */ __IO uint32_t AR; /*!< Offset 0x024 Address Register */ __IO uint32_t DR; /*!< Offset 0x028 Data Register */ __O uint32_t KR; /*!< Offset 0x02C Key Register */ __IO uint32_t PCR; /*!< Offset 0x030 Protection Control Register */ } S3FM_DFC_TypeDef; /*@}*/ /* end of group S3FM02G_DFC */ /** DMA Channel Structure *****/ /*------------- DMA channel (DMA_C) ---------------------------*/ /** @addtogroup S3FM02G_DMA_C (DMA_C) @{ */ typedef struct { __IO uint32_t ISR; /*!< Offset 0x000 Channel Control Register */ __IO uint32_t ISCR; /*!< Offset 0x004 Channel Mode Register */ __IO uint32_t IDR; /*!< Offset 0x008 Channel Clear Status Register */ __IO uint32_t IDCR; /*!< Offset 0x00C Channel Status Register */ __IO uint32_t CR; /*!< Offset 0x010 Channel Interrupt Enable Register */ __I uint32_t SR; /*!< Offset 0x014 Status Register */ __I uint32_t CSR; /*!< Offset 0x018 Current Source Register */ __I uint32_t CDR; /*!< Offset 0x01C Current Destination Register */ __IO uint32_t MTR; /*!< Offset 0x020 Channel Interrupt Disable Register */ __IO uint32_t RSR; /*!< Offset 0x024 Channel Interrupt Mode Register */ uint32_t ReservedB[22]; } S3FM_DMA_CHANNEL_TypeDef; /*@}*/ /* end of group S3FM02G_DMA_C */ /** DMA Controller Structure *****/ /*------------- DMA Controller (DMAC) ---------------------------*/ /** @addtogroup S3FM02G_DMA (DMAC) @{ */ typedef struct { S3FM_DMA_CHANNEL_TypeDef CHANNEL[6]; uint32_t Reserved[128]; __I uint32_t IDR; /*!< Offset 0x500 (R ) ID Register */ __O uint32_t SRR; /*!< Offset 0x504 ( W) Software Reset Register */ __I uint32_t CESR; /*!< Offset 0x508 (R ) Channel Enable Status Register */ __I uint32_t ISR; /*!< Offset 0x50C (R ) Interrupt Status Register */ __O uint32_t ICR; /*!< Offset 0x510 ( W) Interrupt Clear Register */ }S3FM_DMAC_TypeDef; /*@}*/ /* end of group S3FM02G_DMAC */ /** Encoder Interface Structure *****/ /*------------- Encoder Interface (ENC) ---------------------------*/ /** @addtogroup S3FM02G_ENC (ENC) @{ */ typedef struct { __I uint32_t IDR; /*!< Offset 0x000 (R ) Encoder Control Register 0 */ __IO uint32_t CEDR; /*!< Offset 0x004 (R/W) Encoder Control Register 1 */ __O uint32_t SRR; /*!< Offset 0x008 ( W) Encoder Control Register 0 */ __IO uint32_t CR0; /*!< Offset 0x00C (R/W) Encoder Control Register 0 */ __IO uint32_t CR1; /*!< Offset 0x010 (R/W) Encoder Control Register 1 */ __IO uint32_t SR; /*!< Offset 0x014 (R/W) Encoder Status Register */ __IO uint32_t IMSCR; /*!< Offset 0x018 (R/W) Interrupt Mask Set/Clear Register */ __I uint32_t RISR; /*!< Offset 0x01C (R ) Raw Interrupt Status Register */ __I uint32_t MISR; /*!< Offset 0x020 (R ) Masked Interrupt Status Register */ __O uint32_t ICR; /*!< Offset 0x024 ( W) Interrupt Clear Register */ __IO uint32_t PCR; /*!< Offset 0x028 (R/W) 16bit Position Counter Register */ __IO uint32_t PRR; /*!< Offset 0x02C (R/W) 16bit Position Reference Register */ __IO uint32_t SPCR; /*!< Offset 0x030 (R/W) 16bit Speed Counter Register */ __IO uint32_t SPRR; /*!< Offset 0x034 (R/W) 16bit Speed Reference Register */ __IO uint32_t PACCR; /*!< Offset 0x038 (R/W) 16bit Phase A Capture Counter Register */ __IO uint32_t PACDR; /*!< Offset 0x03C (R/W) 16bit Phase A Capture Data Register */ __IO uint32_t PBCCR; /*!< Offset 0x040 (R/W) 16bit Phase B Capture Counter Register */ __IO uint32_t PBCDR; /*!< Offset 0x044 (R/W) 16bit Phase B Capture Data Register */ } S3FM_ENC_TypeDef; /*@}*/ /* end of group S3FM02G_ENC */ /** Free Running Timer Structure *****/ /*------------- Free Running Timer (FRT) ---------------------------*/ /** @addtogroup S3FM02G_FRT (FRT) @{ */ typedef struct { __I uint32_t IDR; /*!< Offset 0x000 (R ) ID Register */ __IO uint32_t CEDR; /*!< Offset 0x004 (R/W) Clock Enable/Disable Register */ __O uint32_t SRR; /*!< Offset 0x008 ( W) Software Reset Register */ __IO uint32_t CR; /*!< Offset 0x00C (R/W)Control Register */ __I uint32_t SR; /*!< Offset 0x010 (R )Status Register */ __IO uint32_t IMSCR; /*!< Offset 0x014 (R/W)Interrupt Mask Set/Clear Register*/ __I uint32_t RISR; /*!< Offset 0x018 (R )Raw Interrupt Status Register */ __I uint32_t MISR; /*!< Offset 0x01C (R )Masked Interrupt Status Register */ __O uint32_t ICR; /*!< Offset 0x020 ( W) Interrupt Clear Register */ __IO uint32_t DR; /*!< Offset 0x024 (R/W) Data Register */ __I uint32_t DBR; /*!< Offset 0x028 (R ) Data Buffer Register */ __I uint32_t CVR; /*!< Offset 0x02C (R )Counter Value Register */ } S3FM_FRT_TypeDef; /*@}*/ /* end of group S3FM02G_FRT */ /** General Purpose IO *****/ /*------------- General Purpose IO (GPIO) ---------------------------*/ /** @addtogroup S3FM02G_GPIO (GPIO) @{ */ typedef struct { __I uint32_t IDR; /*!